sql - Hive 查询:阶段中的不明确列引用 acct_nbr
问题描述
我得到“不明确的列参考”
询问 :
SELECT stage.acct_nbr
FROM (SELECT *
FROM mem stage
JOIN (SELECT acct_nbr,
corp_ent_cd,
sub_seq_nbr,
mem_nbr,
Max(cdc_src_last_updt_ts) AS cdc_src_last_updt_ts
FROM mem
WHERE file_nm = 'DLTV.FULL.MES3191.D180423'
GROUP BY acct_nbr,
corp_ent_cd,
sub_seq_nbr,
mem_nbr) c
ON c.corp_ent_cd = stage.corp_ent_cd
AND c.acct_nbr = stage.acct_nbr
AND c.sub_seq_nbr = stage.sub_seq_nbr
AND c.mem_nbr = stage.mem_nbr
AND stage.cdc_src_last_updt_ts = c.cdc_src_last_updt_ts
WHERE stage.file_nm = 'DLTV.FULL.MES3191.D180423') stage;
错误信息:
错误:编译语句时出错:FAILED:SemanticException [错误 10007]:阶段中的不明确列引用 acct_nbr(状态 = 42000,代码 = 10007)
然而,如果我选择 * 而不是 select stage.acct_nbr,它执行时不会出错。
有人可以解决我的问题吗?
解决方案
问题出在SELECT *
.
子查询中有两列c.acct_nbr
,stage.acct_nbr
所以外部SELECT
无法stage.acct_nbr
区分您要获取哪个列。
所以你可以选择c.acct_nbr
或stage.acct_nbr
在你的select
子查询中
你可以试试这个。
SELECT stage.acct_nbr
FROM (SELECT c.acct_nbr
FROM mem stage
JOIN (SELECT acct_nbr,
corp_ent_cd,
sub_seq_nbr,
mem_nbr,
Max(cdc_src_last_updt_ts) AS cdc_src_last_updt_ts
FROM mem
WHERE file_nm = 'DLTV.FULL.MES3191.D180423'
GROUP BY acct_nbr,
corp_ent_cd,
sub_seq_nbr,
mem_nbr) c
ON c.corp_ent_cd = stage.corp_ent_cd
AND c.acct_nbr = stage.acct_nbr
AND c.sub_seq_nbr = stage.sub_seq_nbr
AND c.mem_nbr = stage.mem_nbr
AND stage.cdc_src_last_updt_ts = c.cdc_src_last_updt_ts
WHERE stage.file_nm = 'DLTV.FULL.MES3191.D180423') stage;
推荐阅读
- javascript - 横向图例 React-vis
- vb.net - 绑定数据网格不显示值
- c# - Record audio from two input device at the same time and save into wave file?
- node.js - 公牛竞技场表演公牛队列
- python-3.x - 确定开始参数 2D 高斯拟合
- mongodb - 如何在猫鼬模式中将对象 ID 数组设置为“必需”?
- react-native - 如何在 React-Native 中编写或导入 Bootstrap
- amazon-ecs - 多个任务的 AWS ECS 服务发现
- c# - 组合框不允许我写入和选择一个值
- ios - 如何查看内容 UITableView 的可复用池