hive - Hive:将 Cast 与 COALESCE 结合使用并为其设置别名
问题描述
对于给定的用例。我正在尝试将 COALESCE 与 CAST 一起使用。在线尝试了几个资源,但没有一个有帮助(可能是由于我的知识有限)。
我尝试了以下查询以通过别名 COALESCE 获取结果
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
但这不起作用。收到错误:
Invalid column reference 'ord_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
但这也因错误而失败:
Invalid table alias or column reference 'order':
这对我来说非常简单和愚蠢。但是已经花了几个小时来弄清楚但没有得到任何结果。任何前进的方向都会非常有帮助。
解决方案
固定的:
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
推荐阅读
- python - 将文本变成字典
- python - 如何使用循环删除多个数组中的相同列?
- ruby-on-rails - Rails:仅显示表单选择字段内的特定对象
- java - 创建一个活动作为实例?
- ios - iOS13 Safari WebSpeechApi 错误:SpeechSynthesisUtterance 不会使用提供的语言环境
- flutter - 任何用于长列表的轻量级 Flutter Network Image 插件?(最多可加载 500 多个图片网址)
- excel - Excel VBA 安装插件
- javascript - 事件后更新数组
- go - 在 golang 中运行生产可扩展 websocket 服务器库
- botframework - 使用 MS Teams、Power Automate 和 Adaptive Cards:如何使用来自使用 Flow Bot 的用户的输入以在另一个 Adaptive Card 中使用