我有这段代码,我的ELSE不工作。它应该返回"未知",但我仍然在结果中看到NULL。发生了什么事?
case
when t2.NEURO_GRP_2 is not NULL then t2.NEURO_GRP_1 --ASSIGN GROUP 2 BASED ON PRIMARY DX CODE
when t2.NEURO_GRP_2 is null AND t6.NEURO_GRP_2 IS NOT NULL then t6.NEURO_GRP_2 --ASSIGN GROUP 2 BASED ON CLINIC
when t2.NEURO_GRP_2 is null AND t6.NEURO_GRP_2 IS NULL then t3.NEURO_GRP_3 --ASSIGN GROUP 2 BASED ON PROCEDURE GROUP
ELSE 'UNKNOWN'
end AS NEURO_GRP_2,
也许您想要coalesce()
:
coalesce(t2.NEURO_GRP_2, t6.NEURO_GRP_2, t3.NEURO_GRP_3, 'UNKNOWN')
这将返回第一个非NULL
值。用一个常量作为最后一个参数,它永远不会返回NULL
。
看起来coalesce()
确实做到了你想要的:
coalesce(t2.NEURO_GRP_2, t6.NEURO_GRP_2, t3.NEURO_GRP_3, 'UNKNOWN') S NEURO_GRP_2
您的原始代码可能的问题是:
第一个条件不匹配(检查一列的无效性,但返回另一列(
条件在某种程度上是多余的,并且没有正确级联
你可能是在说:
case
when t2.NEURO_GRP_2 IS NOT NULL then t2.NEURO_GRP_2
when t6.NEURO_GRP_2 IS NOT NULL then t6.NEURO_GRP_2
when t3.NEURO_GRP_3 IS NOT NULL then t3.NEURO_GRP_3
else 'UNKNOWN'
end AS NEURO_GRP_2
这正是coalesce()
所做的。