【发布时间】:2015-07-18 07:54:20
【问题描述】:
以下内容在 RDBMS 数据库上作为 SQL 运行良好。但是,这无法在 hive 上运行。
SELECT
entry_date,
customer,
cust_loc,
SUM(run_time) AS TOTAL_RUN,
SUM(CASE WHEN run_time BETWEEN 10000 AND 20000 THEN entry_date ELSE 0 END) AS SLOT_1,
SUM(CASE WHEN run_time BETWEEN 200001 AND 30000 THEN entry_date ELSE 0 END) AS SLOT_2,
SUM(CASE WHEN run_time BETWEEN 31000 AND 40000 THEN entry_date ELSE 0 END) AS SLOT_3
FROM
cust_run_details
WHERE
app_env IN ('a','b')
AND entry_date = '2015-02-01'
AND flag_set='U'
GROUP BY
customer,
customer,
cust_loc
我在 HIVE 上运行时遇到的错误是
FAILED: SemanticException [Error 10016]: Line 6:80 Argument type mismatch '0': The expression after ELSE should have the same type as those after THEN: "string" is expected but "int" is found
如何将其转换为 Hive 等效项?请任何想法在这里对我有帮助
【问题讨论】:
-
将 SUM 更改为 COUNT 并去掉“ELSE 0”。花了很长时间才到那里。叹息..