首页 > 解决方案 > 比较 2 个表并跟踪更改的列和其他设置为 null

问题描述

我有比较两张桌子的情况。一个是当前数据,另一个是以前数据的快照。比较的结果存储到 #temp 表(已更改的行)中。之后,我将 #temp 表与最后一个快照数据进行比较以跟踪更改的列。我需要为此我做了一个选择语句:

我正在考虑添加和 ROW_NUMBER() windows 函数,这可能会解决这个问题。有什么建议么?

标签: sqlsql-server

解决方案


如果我理解正确,您可以使用row_number()or outer apply。后者将FROM条款更改为:

FROM #tempUpdatedAddress l OUTER APPLY
     (SELECT TOP (1) n.*
      FROM UpdatedEntityStg n 
      WHERE n.[ADDRESSID] = n.[ADDRESSID] 
      ORDER BY n.snapshotdate DESC
     ) n

注意:您没有指定如何知道快照的顺序,所以我发明snapshotdateORDER BY. 使用包含订购信息的任何列。


推荐阅读