Hive 配置单元:使用带有合并和别名的强制转换

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

对于给定的用例。我试着用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.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