Hive 配置单元:使用带有合并和别名的强制转换
对于给定的用例。我试着用COALESCE和CAST。在网上尝试了两个来源,但没有一个有用(可能是因为我的知识有限) 我尝试了以下查询,以通过别名合并获得结果Hive 配置单元:使用带有合并和别名的强制转换,hive,group-by,hiveql,Hive,Group By,Hiveql,对于给定的用例。我试着用COALESCE和CAST。在网上尝试了两个来源,但没有一个有用(可能是因为我的知识有限) 我尝试了以下查询,以通过别名合并获得结果 SELECT S.id, S.subj_cd, S.wrk_cd, COALESCE(S.ord_cnt,0) AS order, COALESCE(M.trans_cnt,0) AS trans FROM DB_USER.ORD_CNT S LEFT OUTER JOIN DB_USER.T
SELECT
S.id,
S.subj_cd,
S.wrk_cd,
COALESCE(S.ord_cnt,0) AS order,
COALESCE(M.trans_cnt,0) AS trans
FROM
DB_USER.ORD_CNT S
LEFT OUTER JOIN DB_USER.TRANS_CNT M ON
(S.id = M.id
AND S.subj_cd = M.subj_cd
AND S.wrk_cd = M.wrk_cd
WHERE S.id=111111
GROUP BY
S.id,
S.subj_cd,
S.wrk_cd,
order,
trans
但这是行不通的。获取错误:
无效的列引用“ord\u cnt”
然后尝试了以下方法:
SELECT
S.id,
S.subj_cd,
S.wrk_cd,
CAST(COALESCE(S.ord_cnt,0)) AS order,
COALESCE(M.trans_cnt,0) AS trans
FROM
DB_USER.ORD_CNT S
LEFT OUTER JOIN DB_USER.TRANS_CNT M ON
(S.id = M.id
AND S.subj_cd = M.subj_cd
AND S.wrk_cd = M.wrk_cd
WHERE S.id=111111
GROUP BY
S.id,
S.subj_cd,
S.wrk_cd,
order,
trans
但这也失败了,出现了一个错误:
无效的表别名或列引用“顺序”:
我真是太简单和愚蠢了。但我已经花了几个小时去弄清楚,但没有取得任何进展。任何前进的方向都会非常有用。修复:
SELECT
S.id,
S.subj_cd,
S.wrk_cd,
COALESCE(S.ord_cnt,0) AS `order`,
COALESCE(M.trans_cnt,0) AS trans
FROM
DB_USER.ORD_CNT S
LEFT OUTER JOIN DB_USER.TRANS_CNT M ON
S.id = M.id
AND S.subj_cd = M.subj_cd
AND S.wrk_cd = M.wrk_cd
WHERE S.id=111111
GROUP BY
S.id,
S.subj_cd,
S.wrk_cd,
COALESCE(S.ord_cnt,0), --use un-aliased columns in the group by
COALESCE(M.trans_cnt,0) --use un-aliased columns in the group by