2

我想将数据从 MsSQL 导入到 HBase,运行一个自由形式的查询,该查询在我想要拆分的键上有一个别名。例如我的查询是:

SELECT       convert(varchar,Table1.Field1) + '_' + Table2.field1 AS 'xyz' 
FROM         Table1
INNER JOIN   Table2 
ON           Table1.field3 = Table2.field4
WHERE        $CONDITIONS

我想按这个别名字段拆分工作单元。所以,在我的 sqoop 查询中,我可以--split-by 'xyz'选择。但是,这行不通。我得到:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 
Ambiguous column name 'xyz'.

那么,我怎样才能让 sqoop 使用这个别名选择字段呢?

4

1 回答 1

2

这是 SQL-Server 的限制。它不允许在别名列上使用 GROUP BY。

以下列方式重写查询有助于:

SELECT xyz FROM
(
    SELECT       convert(varchar,Table1.Field1) + '_' + Table2.field1 AS 'xyz' 
    FROM         Table1
    INNER JOIN   Table2 
    ON           Table1.field3 = Table2.field4
) as sub
WHERE $CONDITIONS
于 2012-11-09T15:56:23.553 回答