2017-05-25 20 views
1

における句「オン」のcase文を使用して参加しますtble_Aの値の長さに応じて、substr()を結合するときは長さが長くなります。 だから私はHiveQLを使用してテーブルを結合するとき句「ON」でcase文を適用しようとしていた、と私はエラーを次取得:ここ条件付きでのは、言ってみましょうHiveQL

Error while compiling statement: FAILED: SemanticException [Error 10017]: Line 22:3 Both left and right aliases encountered in 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

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