【问题标题】:Sub Query with case statement带有 case 语句的子查询
【发布时间】:2016-03-31 00:37:57
【问题描述】:
SELECT
A.MARKETING_PLAN,
A.TERM,
A.TIER
CASE WHEN A.TERM<=60 THEN 'ST' ELSE 'LT' end as TERM_2
FROM ABC A;

我想通过使用 TERM_2 字段(有 2 个子集:LT 和 ST)来编写以下 case 语句。

CASE WHEN TERM_2=LT and TIER=5 THEN 5.49 ELSE 'NULL' END AS BU

我不能使用上面的 case 语句,因为 TERM_2 刚刚创建。 我想我需要使用子查询,我尝试了很多方法,但它不起作用。 请查看我的代码并帮助我解决问题。 非常感谢。

【问题讨论】:

    标签: case-statement


    【解决方案1】:

    因为a.bu 依赖于a.term_2a.tier 的值,所以它间接依赖于a.term 字段。所以你只需要检查a.term是否大于60(如果a.term大于60,a.term_2等于LT)。

    SELECT
      a.marketing_plan,
      a.term,
      a.tier,
      CASE WHEN a.term<=60 THEN 'ST' ELSE 'LT' END AS term_2,
      CASE WHEN a.term>60 AND a.tier=5 THEN 5.49 ELSE NULL END AS bu
    FROM ABC a;
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 它回答问题的额外上下文将显着改善其长期价值。请edit你的答案添加一些解释。
    猜你喜欢
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多