【发布时间】:2019-08-10 09:40:49
【问题描述】:
我有两个表都包含员工数据,TableA 和 TableB,我使用 @ 987654325@ 在大约 20% 的结果中返回 NULL,因为 TableB 它不完整。如果可能的话,我想要一个查询来检测连接是否找不到匹配项并将一个月减去 mID,这样 JOIN 可以仅用旧数据覆盖至少一部分丢失的数据。
我不知道这是否是一个太复杂的查询,但我想到了类似的东西:
SELECT T1.*, T2.*
FROM TABLEA
LEFT OUTER JOIN TABLEB
ON T2.USERID = T1.USERID AND (CASE WHEN (T2.HID = T1.HID) = NULL THEN (T2.HID = T1.HID-1))
感谢任何帮助。
【问题讨论】:
-
评论:使用“IS NULL”而不是“= NULL”
-
我认为您需要在此处提供一些示例数据和所需的输出。
-
尝试以这种方式处理密钥确实是个坏主意,原因有很多。为什么使用“旧”数据加入甚至有效?
-
@DavidTansey,
TableB可能包含与一个月前相同的数据(通常为 95%-ish),但我无法自己更新表格,此外,该表格只是包含tableA的相同员工的参考数据
标签: sql sql-server tsql join case