代码之家  ›  专栏  ›  技术社区  ›  Selvam

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

  •  0
  • Selvam  · 技术社区  · 7 年前

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

    条件

    如果Customer\u country=–A–A

    1. 那么Ship\u country必须=A

    2. 和客户编号<&燃气轮机;A2(即排除A2)

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

    相同的逻辑适用于所有Customer\u国家/地区,其中排除了相应的B2、C2、D2 Customer\u编号。

    enter image description here

    我对使用CASEWHEN感到困惑,因为它应该返回一个值。
    但我没有返回任何值。请帮助进行此查询。

    1 回复  |  直到 7 年前
        1
  •  1
  •   D-Shih    7 年前

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

    使用 || 组合char-like的方法 A2 B2 ... ,然后你可以排除它。

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

    teradata ||

    编辑

    如果customer\u编号类似于“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