2016-03-31 214 views
0
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語句

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

我不能使用上述的情況下聲明如剛剛創建TERM_2。 我想我需要使用子查詢,我嘗試了很多方法,但它不起作用。 請看我的代碼,並幫助我解決問題。 非常感謝提前。

回答

0

因爲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; 
+0

儘管此代碼可以回答這個問題,提供 附加的上下文有關_why_和/或_how_它回答 問題將顯著改善其長期 值。請[編輯]你的答案,添加一些解釋。 –