【发布时间】:2020-10-20 10:21:39
【问题描述】:
我正在尝试通过将新数据左连接到原始数据并比较输出来创建比较查询。我的查询很简单,但似乎无法让它做我想做的事。我知道我无法像其他值一样比较 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
我想知道是否需要将这些值插入到临时表中以使其成为物理值?
提前致谢
抱歉,我应该添加此查询的结果:
我真的希望支票显示正确。
谢谢
【问题讨论】:
-
#Tmp_ORIG_DATA是如何定义的? -
NULL不等于包括NULL在内的任何其他值。NULL = NULL返回 UNKNOWN,这是(重要的)not TRUE。如果您需要在两个值都是NULL的情况下进行比较,则使用`IS NULL` 和AND:COL1 IS NULL AND COL2 IS NULL。 -
谢谢大家,我刚刚添加了我目前得到的结果的图像。
-
Larnu - 原始数据中没有 Null 值。所以它将 0 与 Null 进行比较,但我认为通过添加 ISNULL(....,0) 可以解决这个问题?
-
预期结果很好,但我们也需要样本表数据——我们大多数人都希望它是格式化文本,而不是图像。 minimal reproducible example
标签: sql sql-server left-join case sql-null