让我们说:要加入的 tbl_A 列中的值有不同的长度:5和10。
要加入的 tbl_B 列中的值较长,并且应根据tble_A中值的长度应用加入substr()
。
所以我试图在' ON'中应用案例陈述。使用HiveQL加入表时的子句,我收到以下错误:
编译语句时出错:FAILED:SemanticException [错误10017]:第22行:3在JOIN' 11'
中遇到左右别名
这是我的代码:
select
a.fullname, b.birthdate
from mydb.tbl_A a
left join mydb.tbl_B b
on a.fullname =
case when length(a.fullname) = 5 then substr(b.othername,1,5)
when length(a.fullname)= 9 then substr(b.othername, 8, 9) end
and a.birthdate = b.birthdate
我找不到太多关于此的信息。非常感谢您的帮助。谢谢。
答案 0 :(得分:0)
JOIN
目前有一些限制
这是一个解决方法。
select a.fullname
,b.birthdate
from tbl_A a
left join tbl_B b
on a.fullname =
substr(b.othername,1,5)
and a.birthdate =
b.birthdate
where length(a.fullname) <> 9
or a.fullname is null
union all
select a.fullname
,b.birthdate
from tbl_A a
left join tbl_B b
on a.fullname =
substr(b.othername,8,9)
and a.birthdate =
b.birthdate
where length(a.fullname) = 9