2016-03-11 14 views
5

employee_idでtableAとtableBを結合する必要があり、表Aからのcal_dateは表Bの日付開始と日付終了の間にある必要があります。訂正と照会を手伝ってください。助けてくれてありがとう!ハイブで日付範囲の表を結合する

JOIN 'date_start'に左右別名があります。

select a.*, b.skill_group 
from tableA a 
    left join tableB b 
    on a.employee_id= b.employee_id 
    and a.cal_date >= b.date_start 
    and a.cal_date <= b.date_end 
+0

「b.date_startとb.date_endの間のa.cal_date」を使用してください –

+0

入力いただきありがとうございます。私はあなたに構文と同様のエラーを与えた。 JOIN 'date_end'で左右のエイリアスが発生しました。 – Mixer

答えて

3

RTFM - /マップなどの条件を表現 仕事を削減することは非常に困難であるとして 等価条件ではないの結合条件をサポートしていませんLanguageManual Joins

ハイブを引用。

WHERE句にBETWEENフィルタを移動しようとすると、部分的にデカルト結合が発生し、その後に後処理がクリーンアップされます。ヤック"スキルグループ"テーブルの実際のカーディナリティに応じて、それは速く働くかもしれません - または、全日を取るかもしれません。