[英]Nested CASE Statement With ELSe (SQL Server)
我有一個CASE聲明,如下所示
CASE
WHEN A IS NULL
THEN CASE
WHEN B IN ('C','D') THEN NULL
WHEN X NOT IN ('C','D') THEN Z
End
ELSE SOMETHING_ELSE -- Want to get here When 'A' IS NOT NULL
END AS 'Result'
當First CASE不為真時我想進入ELSE部分,即'A'不是NULL。 任何人都可以建議我是否錯誤地嵌套了它們? 沒有得到正確的結果。
非常感謝,
首先,您不需要嵌套case
語句。 只使用一個案例:
select (CASE WHEN A IS NULL AND B IN ('C', 'D') THEN NULL
WHEN A IS NULL AND X NOT IN ('C','D') THEN Z
WHEN A IS NOT NULL THEN SOMETHING_ELSE
END) as Result
請注意,當A IS NULL
,但前兩個條件都不滿足,則返回值將是NULL
。
因為case
語句是按順序計算的,所以寫起來更簡單:
select (CASE WHEN A IS NOT NULL THEN SOMETHING_ELSE
WHEN B IN ('C', 'D') THEN NULL
WHEN X NOT IN ('C', 'D') THEN Z
END) as Result
當A
不為NULL
時,第一個條件捕獲。 因此,后兩個是A
為NULL
。
您可以添加第二個何時到您的情況,您可以檢查第二個條件並設置值,否則設置默認值。
CASE
WHEN A IS NULL THEN CASE
WHEN B IN ('C','D') THEN NULL
WHEN X NOT IN ('C','D') THEN Z
End
WHEN A IS NOT NULL THEN yourdesiredvalue
ELSE default value
END AS 'Result'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.