Teradata SQL - 条件取决于 WHERE 子句中的条件

Teradata SQL - Conditions depending on conditions in WHERE clause

这个问题是旧问题 post
的变体

条件

如果Customer_country = ‘A’

  1. 然后Ship_country必须=‘A’

  2. 和Customer_number <> 'A2'(即排除A2)

  3. 并且日期在 x 和 y 之间。 (所有客户国家/地区都相同)

同样的逻辑适用于所有 Customer_country,其中相应的 B2、C2、D2 Customer_number 被排除在外。

我对使用 CASE...WHEN 感到困惑,因为它应该是 return 一个值。
但我没有 returning 任何价值。请帮助这个查询。

您应该使用 where 子句而不是 case when

使用||方法组合字符,如A2B2 ...,然后你可以排除它。

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

teradata ||

编辑

如果 customer_number 类似于 '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