我有一个好奇的场景,我一直在看最后一小时而且无法理解......
CASE WHEN A.ADMIN IS NULL THEN 0
ELSE
CASE WHEN NULLIF(A.ADMIN, 0.0) = COALESCE(NULLIF(O.QUANTITY, 0.0),NULLIF(O.STRENGTH, 0.0),NULLIF(O.VOLUME, 0.0),NULLIF(O.DOSE, 0.0)) THEN 1
ELSE 2
END
END
所以,问题是A.ADMIN是一个外连接的结果,我永远不会知道它什么时候被填充..但我需要根据表O的第一个非空值来评估它的结果,看看我是否应该发布1或2。
任何帮助表示赞赏!! 克里斯
答案 0 :(得分:1)
NULL
已被滤除。因此,在第二种情况下,您不需要使用NULLIF
。
并且COALESCE
返回第一个非空值。因此,您无需在那里应用NULLIF
。
试试这个: -
CASE WHEN A.ADMIN IS NULL
THEN 0
ELSE
CASE WHEN A.ADMIN = COALESCE(O.QUANTITY,O.STRENGTH,O.VOLUME,O.DOSE)
THEN 1
ELSE 2
END
END
答案 1 :(得分:1)
搞定了,不得不改变我的想法:
CASE WHEN CMR.ADMIN_DOSAGE = COALESCE(NULLIF(OI.DOSE_QUANTITY, 0.0),NULLIF(OI.STRENGTH,0.0),NULLIF(OI.VOLUME, 0.0),NULLIF(OI.ORDERED_DOSE, 0.0)) THEN 1.00
ELSE
CASE WHEN CMR.ADMIN_DOSAGE IS NOT NULL THEN 2.00 END
END