【发布时间】:2022-01-12 09:34:25
【问题描述】:
我有一个这样的查询:
SELECT MONTH_ID, 'Total' AS cola, colb
FROM
(
SELECT A.*, ROW_NUMBER()OVER(PARTITION BY MONTH_ID,col3 ORDER BY col4 DESC) AS ROWN
FROM
(
SELECT A.*, B.col3
FROM table1 A
LEFT JOIN table2 B
ON A.col1 = B.col1
) A
)
WHERE ROWN=1
GROUP BY MONTH_ID
如果我用子查询创建一个中间表,这个查询就可以工作。但是当我运行整个过程时,Impala 会引发:“AnalysisException:第 12 行中的语法错误:未定义:WHERE ROWN = 1 ^ 遇到:预期位置:AS、DEFAULT、IDENTIFIER 导致:异常:语法错误”
我尝试在 Hive 中运行它,不同的错误显示:“编译语句时出错:FAILED: ParseException line 20:4 cannot identify input near 'WHERE' 'ROWN' '=' in subquery source”
然后我在 oracle 中尝试了相同的查询,它有效...
谁能解释为什么会发生这种情况以及如何解决这个问题? 谢谢你的帮助;)
【问题讨论】: