如何解决为什么我的case语句不返回“ else”子句中的值?
我有这段代码,但我的ELSE无法正常工作。它应该返回“ UNKNOWN”,但我的结果中仍然出现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') 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()
的作用。
也许您想要coalesce()
:
coalesce(t2.NEURO_GRP_2,'UNKNOWN')
这将返回第一个非NULL
值。用常量作为最后一个参数时,它永远不会返回NULL
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。