我有一个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不正确,即“ A”不为NULL时,我想进入ELSE部分。任何人都可以建议我是否错误地嵌套了它们?没有得到正确的结果。
非常感谢,
首先,您不需要嵌套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
。因此,后两个是whenA
是NULL
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句