在 sqoop 查询中连接两个表时的算术运算

Arithmetic operation while joining two tables in a sqoop query

我有一个 Teradata 查询可以在 Teradata SQL 助手中正确运行,但在 sqoop 脚本中写入时显示错误。

查询使用如下条件对三个表进行联接:

...

From tableA as A \
Inner Join tableB as B\
Inner Join tableC as C \
On (B.ID = C.ID and (100*year(A.dt) + month(A.dt)) = C.curr_dt) \

...

我在 sqoop 中得到的错误来自于乘法。

15/01/06 00:44:01 ERROR manager.SqlManager: Error executing statement: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC xx.yy.zz.ww] [Error 3706] [SQLState 42000] Syntax error: expected something between '*' and the 'year' keyword.

sqoop 的 join 中不能进行算术运算吗?我还没有找到任何资源来帮助我解决这个问题。任何帮助将不胜感激。

谢谢!

YEAR 和 MONTH 不是有效的 Teradata SQL,两者都是 ODBC 语法,由 ODBC 驱动程序自动重写。

试试 EXTRACT(YEAR FROM A.dt)