我正在執行查詢,該查詢在具有多個值的where子句中有多個列。我知道在SQL中可以使用IN條件來滿足並獲得正確的輸出。 teradata有什麼辦法?多個列在where子句中有多個值
我在Oracle中的代碼如下所示:
select td.country_code,td.phone_num
from telephone_directory td
where (td.country_code, td.phone_num) in ((91,1234567890),(44,1020304050),(1,998877446655))
此打印出即3行
我在Teradata的查詢看起來像這樣
select country_code ,phone_num
from telephone_directory
where (country_code in (91, 44, 1) and phone_num in(1234567890, 1020304050, 998877446655)
然而,這將返回更精確的結果行:
country_code phone_num
91 1234567890
91 1020304050
44 1020304050
1 998877446655
注意:country_code和phone號碼的組合不是唯一的。
有沒有一種方法可以像在ORACLE中那樣在Teradata中進行過濾?
頂部查詢使用「兩兩比較的子查詢」(資料來源:2007年的Oracle SQL類幻燈片)。這意味着這兩個值必須存在於同一行中。第二個查詢是非成對比較,兩個值可以彼此存在於不同的行中。 由於Teradata無法進行配對比較,所以最好的答案可能是下面顯示的將值連接成組合鍵的那個。 – Bryansix 2017-01-10 02:17:32