Teradata SQL - 条件取决于 WHERE 子句中的条件
Teradata SQL - Conditions depending on conditions in WHERE clause
这个问题是旧问题 post
的变体
条件
如果Customer_country = ‘A’
然后Ship_country必须=‘A’
和Customer_number <> 'A2'(即排除A2)
并且日期在 x 和 y 之间。 (所有客户国家/地区都相同)
同样的逻辑适用于所有 Customer_country,其中相应的 B2、C2、D2 Customer_number 被排除在外。
我对使用 CASE...WHEN 感到困惑,因为它应该是 return 一个值。
但我没有 returning 任何价值。请帮助这个查询。
您应该使用 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
编辑
如果 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
这个问题是旧问题 post
的变体
条件
如果Customer_country = ‘A’
然后Ship_country必须=‘A’
和Customer_number <> 'A2'(即排除A2)
并且日期在 x 和 y 之间。 (所有客户国家/地区都相同)
同样的逻辑适用于所有 Customer_country,其中相应的 B2、C2、D2 Customer_number 被排除在外。
我对使用 CASE...WHEN 感到困惑,因为它应该是 return 一个值。
但我没有 returning 任何价值。请帮助这个查询。
您应该使用 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
编辑
如果 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