带有case语句的子查询

时间:2016-03-31 00:37:57

标签: case-statement

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字段编写以下case语句(有2个子集:LT和ST)。

案例当​​TERM_2 = LT且TIER = 5然后5.49 ELSE'NULL'结束为BU

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

1 个答案:

答案 0 :(得分:0)

由于a.bu取决于a.term_2a.tier的值,因此它间接取决于a.term字段。因此,如果a.term大于60,您只需检查a.term_2是否大于60(LT等于a.term

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;