10
我無法通過使用下面的HIVE查詢來通過相等性檢查。連接表時Hive查詢中的錯誤
我有3桌,我想加入這些表。我嘗試如下,但得到的錯誤:
失敗:錯誤的語義分析:行3:40左右兩側的別名遇到JOIN「VISIT_DATE」
select t1.*, t99.* from table1 t1 JOIN
(select v3.*, t3.* from table2 v3 JOIN table3 t3 ON
(v3.AS_upc= t3.upc_no AND v3.start_dt <= t3.visit_date AND v3.end_dt >= t3.visit_date AND v3.adv_price <= t3.comp_price)) t99 ON
(t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
編輯基於幫助從FuzzyTree:
1st:
我們嘗試使用between和where子句編輯上述查詢,但未從查詢中獲取任何輸出。
但是,如果我們通過刪除between子句與日期來更改上述查詢,那麼我得到了一些基於「v3.adv_price < = t3.comp_price」的輸出,但沒有使用「date filter」。
select t1.*, t99.* from table1 t1 JOIN
(select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no)
where v3.adv_price <= t3.comp_price
) t99 ON
(t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
第二:
接下來,我們試圖通過只有一個日期:
select t1.*, t99.* from table1 t1 JOIN
(select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no)
where v3.adv_price <= t3.comp_price and v3.start_dt <= t3.visit_date
) t99 ON
(t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
所以,現在它顯示出一些結果,但如果我們通過雙方的開始和結束日期過濾器,它;沒有顯示任何結果。
我編輯的查詢基於你的幫助,但仍無法從查詢的輸出。我已更新了我的原始帖子。 – Abhi 2014-09-16 20:48:38
我遇到了同樣的問題。解決方案建議是好的。不過我注意到錯誤信息可以改進。這是誤導。 – paolov 2017-01-31 05:55:21