错误:当前子查询表达式仅允许作为配置单元中的 where 子句谓词
Posted
技术标签:
【中文标题】错误:当前子查询表达式仅允许作为配置单元中的 where 子句谓词【英文标题】:error : currently subquery expressions are only allowed as where clause predicates in hive 【发布时间】:2021-07-25 20:16:04 【问题描述】:我编写了如下的配置单元查询语言。它给了我标题中写的错误。 查询是:
SELECT clnt_nbr,
CASE
WHEN clnt_nbr in
(SELECT clnt_NBR
FROM crd_master
WHERE crd_typ = '198 or crd_typ = '199' ) THEN 1
ELSE 0
END) AS f_ultima
FROM INT_CLNT_master
ORDER BY clnt_nbr;
我在这个配置单元查询中遇到错误
“目前子查询表达式只允许在hive中作为where子句谓词”。
请帮忙!!
【问题讨论】:
请检查括号/方括号好吗?好像你错过了一个。另请检查单引号 【参考方案1】:请使用 ansi join 语法重写 hive ql,如下所示。如果您看到重复,请使用您的 subqry 并使用 distinct。
select icm.clnt_nbr,
case when cm.clnt_nbr is not null then 1 else 0 end as f_ultima
from INT_CLNT_master icm
Left outer join crd_master cm on icm.clnt_nbr=cm.clnt_NBR and ( crd_typ = '198 or crd_typ = '199' )
order by clnt_nbr;
【讨论】:
以上是关于错误:当前子查询表达式仅允许作为配置单元中的 where 子句谓词的主要内容,如果未能解决你的问题,请参考以下文章