【发布时间】:2020-12-26 12:21:30
【问题描述】:
所以我正在尝试将 ddl 从 odi(oracle 数据集成)转移到 hive。
代码如下所示:
(308 row of code, there are fppnonday, dtddyr subquery before )
...
LEFT OUTER JOIN
(SELECT * FROM dffo
WHERE 1 = 1
AND dffo.date = '20100909')dffot
ON fppnonday.B_ACCT = dffot.B_CODE
where ( from_unixtime(unix_timestamp(dffot.START_DATE,'yyyyMMdd')) <= dtddyr.FULL_DATE
AND from_unixtime(unix_timestamp(dffot.END_DATE,'yyyyMMdd')) <= dtddyr.FULL_DATE
AND (dffot.C_CODE = '000' OR dffot.NAG = 'Y'))
LEFT OUTER JOIN
(SELECT * FROM dflagw
WHERE 1 = 1
AND dflagw.date = '20100909')dflagwr
ON fppnonday.CUER = dflagwr.CER
AND from_unixtime(unix_timestamp(dflagwr.START_DATE,'yyyyMMdd')) <= dtddyr.FULL_DATE
AND from_unixtime(unix_timestamp(dflagwr.END_DATE, 'yyyyMMdd')) > dtddyr.FULL_DATE
;
当我运行所有查询时,会发生错误: ParseException: Missing EOF at LEFT near ')' 它指的是 2nd LEFT OUTER JOIN
出了什么问题?如何有效高效地使用OR?
任何想法/帮助都会受到赞赏!
【问题讨论】:
-
1.
LEFT JOIN -> WHERE -> LEFT JOIN=>LEFT JOIN -> LEFT JOIN -> WHERE2. 访问外部表的 WHERE 条件(如 dfot.C_CODE = '000')使其成为 INNER JOIN -
对不起,我不明白,卢卡斯。
-
查询有一个订单
SELECT FROM LEFT JOIN LEFT JOIN WHERE,在你的查询中有SELECT FROM LEFT JOIN WHERE LEFT JOIN,这是不正确的语法