在我的查询中,我使用了一条case语句,该语句始终返回else值,这里是查询:
CASE WHEN CC.IBUS_CODE = null then to_char(vDQ.COA_CAT_ID) ELSE (vDQ.COA_CAT_ID ||' | '||CC.IBUS_CODE) end AS COA_CAT_ID
here is the output
COA_CAT_ID
4800 |
4700 | 31113
4600 | 31112
4500 | 31111
4900 |
Expected output
COA_CAT_ID
4800
4700 | 31113
4600 | 31112
4500 | 31111
4900
答案 0 :(得分:1)
case表达式的问题是您正在检查等于null的列-这是不对的。 = null
会返回null而不是true或false,这意味着您的case语句将始终放入else节。
相反,您需要使用is null
,例如:
CASE WHEN CC.IBUS_CODE is null
then to_char(vDQ.COA_CAT_ID)
ELSE (vDQ.COA_CAT_ID ||' | '||CC.IBUS_CODE)
END AS COA_CAT_ID
Here's a db<>fiddle演示问题和解决方法。