Teradata SQL — условия в зависимости от условий в предложении WHERE

Этот вопрос является вариацией более старого сообщения
введите здесь описание изображения

Условия

Если Customer_country = ‘A’

  1. тогда Ship_country должен = ‘A’

  2. и Customer_number ‹> ‘A2’ (т. е. исключить A2)

  3. и дата находится между x и y. (одинаково для всех стран-заказчиков)

Та же логика применима ко всем Customer_country, где исключаются соответствующие B2, C2, D2 Customer_numbers.

введите здесь описание изображения

Меня смущает использование CASE…WHEN, потому что ожидается, что оно вернет значение.
Но я не возвращаю никакого значения. Пожалуйста, помогите с этим запросом.


person Selvam    schedule 28.02.2018    source источник


Ответы (1)


Вы должны использовать предложение where вместо case when

Используя метод || для объединения символов, таких как A2 или B2 ..., вы можете исключить это.

SELECT *
FROM master as t1 
WHERE 
    t1.Customer_number <> t1.Customer_Country || '2'
AND 
    t1.Ship_Country = t1.Customer_Country

teradata ||

ИЗМЕНИТЬ

если номер клиента похож на «981432776», вы можете использовать NOT IN, чтобы исключить это.

SELECT *
FROM master as t1 
WHERE 
    t1.Customer_number NOT IN ('A2','B2','C2','D2')
AND 
    t1.Ship_Country = t1.Customer_Country
person D-Shih    schedule 28.02.2018
comment
A, B, C, D, A1, A2... и т. д. являются замещающими буквами для фактических номеров страны и клиентов. «A2» может быть номером клиента, например «981432776». И я предполагаю, что условия следуют за предложением WHERE. - person Selvam; 28.02.2018