如何解决左侧带有空值的SQL Case
我正在尝试通过将新数据与原始数据连接在一起并比较输出来创建比较查询。我的查询非常简单,但似乎无法使其执行我想要的操作。我知道我无法像其他值一样比较NULL值,但是我希望通过执行ISNULL可以得到所需的结果:
SELECT O.Ded1,ISNULL(N.Ded2,0) AS Ded2,CASE
WHEN O.Ded1 = N.Ded2 THEN 'Correct'
ELSE 'Incorrect'
END AS 'DED CHECK'
FROM #Tmp_ORIG_DATA O
LEFT JOIN #Tmp_NEW_DATA N ON O.ID = N.ID
我想知道是否需要将这些值插入到临时表中以使其成为物理值?
预先感谢
对不起,我应该已经添加了该查询的结果:
我真的希望支票说正确。
谢谢
解决方法
您明确检查是否为空。需要另外进行检查,以区分不匹配的行和Ded2
为null
的匹配行。
SELECT
O.Ded1,N.Ded2,CASE
WHEN O.Ded1 = N.Ded2
OR (N.ID IS NOT NULL AND o.Ded1 IS NULL AND N.Ded2 IS NULL)
THEN 'Correct'
ELSE 'Incorrect'
END AS 'DED CHECK'
FROM #Tmp_ORIG_DATA O
LEFT JOIN #Tmp_NEW_DATA N ON O.ID = N.ID
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。