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

时间:2015-01-06 05:47:25

标签: teradata sqoop

我有一个在Teradata SQL Assistant中正确运行的Teradata查询,但在用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加入期间是否无法进行算术运算?我还没有找到任何资源来帮助我解决这个问题。任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

YEAR和MONTH无效Teradata SQL都是ODBC语法,它由ODBC驱动程序自动重写。

请尝试EXTRACT(YEAR FROM A.dt)