有条件地加入Hive

Avi*_*jit 6 hadoop hive

我想在Hive中执行以下查询 -

select * from supp a inner join trd_acct b
on
(a.btch_id = 11170 AND a.btch_id = b.btch_id)
OR (a.btch_id = 11164 AND a.supp_id = b.supp_id)
Run Code Online (Sandbox Code Playgroud)

但是得到错误 -

FAILED:SemanticException [错误10019]:第3行:1或JOIN当前不支持'supp_id'

sag*_*agi 6

你可以解决这个问题UNION:

select * from supp a inner join trd_acct b
 on a.btch_id = 11170 AND a.btch_id = b.btch_id
UNION ALL
select * from supp a inner join trd_acct b
 on a.btch_id = 11164 AND a.supp_id = b.supp_id
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试CASE EXPRESSION:

select * from supp a
inner join trd_acct b
 on CASE WHEN a.btch_id = 11164 THEN a.supp_id 
         WHEN a.btch_id = 11170 THEN a.btch_id END
  = CASE WHEN a.btch_id = 11164 THEN b.supp_id
         WHEN a.btch_id = 11170 then b.btch_id END
Run Code Online (Sandbox Code Playgroud)