Я выполняю запрос, который имеет несколько столбцов в where where, который имеет несколько значений. Я знаю, что в SQL вы можете использовать условие IN для удовлетворения и получения правильного вывода. Каков способ сделать в терадате?несколько столбцов с несколькими значениями в 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 и номера телефона не уникальна.
Есть ли способ отфильтровать его в терадате, как в ORACLE?
Верхнего запрос использует «парное сравнение подзапрос» (источник: 2007 Oracle SQL слайды класса). Это означает, что два значения должны существовать в одной строке. Второй запрос представляет собой непарельное сравнение, и два значения могут существовать в разных строках как друг друга. Поскольку Teradata не может делать попарные сравнения, лучшим ответом, вероятно, является тот, который показан ниже, чтобы объединить значения в комбинированный ключ. – Bryansix