【问题标题】:Teradata SQL - If condition A1 then evaluate condition b1...for A1,A2,A3Teradata SQL - 如果条件 A1 则评估条件 b1...对于 A1、A2、A3
【发布时间】:2018-08-03 01:08:45
【问题描述】:

这应该产生 -

au  123  john
ph  456  pipin
nz  765  myers
nz  876  philip

【问题讨论】:

  • 到目前为止您尝试了什么,如果有什么错误?

标签: sql conditional-statements where teradata


【解决方案1】:

我认为您只需要稍微更改 WHERE 子句中的语法即可:

SELECT
    country,
    account_num,
    name
FROM table
WHERE
    country = 'au' AND account_num <> '999' OR
    country = 'ph' AND account_num <> '888' OR
    country = 'br' AND account_num <> '555';

【讨论】:

    【解决方案2】:

    添加了另一个条件来捕获除 'au'、'ph' 或 'br' 以外的国家/地区:

    SELECT
        country,
        account_num,
        name
    FROM table
    WHERE
       (country = 'au' AND account_num <> '999') OR
       (country = 'ph' AND account_num <> '888') OR
       (country = 'br' AND account_num <> '555') OR
       country not in ('au', 'ph', 'br');
    

    【讨论】:

    • 您不需要在 ANDed 术语周围加上括号,因为 and 的优先级高于 OR。
    • @TimBiegeleisen:当然,但无论何时混合 AND 和或无论如何都应该编写它们,它更容易理解(并不是每个人都牢记 NOT/AND/OR 优先规则)并且扩展其他附加条件
    • @dnoeth 我完全同意你的观点,它通常是更简洁的代码并且更易于阅读。
    猜你喜欢
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2023-01-09
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    相关资源
    最近更新 更多