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

时间:2018-02-28 03:44:31

标签: sql teradata where-clause case-when

此问题是旧帖子的变体 enter image description here

条件

如果Customer_country ='A'

  1. 然后Ship_country必须='A'

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

  3. ,日期介于x和y之间。 (所有客户所在国家/地区都一样)

  4. 所有Customer_country都采用相同的逻辑,其中排除了相应的B2,C2,D2 Customer_numbers。

    enter image description here

    我很困惑使用CASE ... WHEN因为它会返回一个值 但我没有回报任何价值。请帮助解决此问题。

1 个答案:

答案 0 :(得分:1)

您应该使用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