2017-11-20 11 views
1

GTEまたはLTEの条件で2つのテーブルを結合できないようにする特定の古いバージョンのHIVEを使用する必要があります。例えば、等価とは何かGTEまたはLTE条件での左結合を実行する代わりに何ができますか?

select * 
from table1 as t1 
left join table2 as t2 
on t1.id = t2.id 
    and (t1.date >= t2.date and t1.date <= t2.date+7) -- i can no longer do this condition 

これに対する代替クエリは何ですか?

+0

あなたはBETWEENしようとしたことがありますか?どのバージョンのHiveを使用していますか? – Ramesh

+0

@Ramesh between betweenもうまくいきません – leftjoin

+0

@Ramesh between betweenは動作しません。 – lollerskates

答えて

2

代替後のフィルタとして参加が適用されますwhere句に条件のGTE/LTEの一部を移動することです:

select * 
    from table1 as t1 
     left join table2 as t2 on t1.id = t2.id 
where (t1.date >= t2.date and t1.date <= date_add(t2.date,7)) 
     or t2.id is null 
+2

where句に 'OR table2.id is null 'を追加する必要があります。それ以外の場合は、内部結合で終わります。 @ Andrew。 – Andrew

+0

ありがとう、それを忘れてしまった。一定 – leftjoin

関連する問題