问题描述
||
我有两个表,它们的列完全相同,一个是数据的最新版本,另一个是旧版本。我正在尝试创建一个报告/查询,以告诉我与旧版本相比,新版本中哪个列发生了更改,以及新旧值。多列可以更改值。该表具有一个字段(上次更改日期),以告诉我哪些行已更改,但我不知道更改了什么。
有没有办法做到这一点?我觉得我缺少一些显而易见的东西。我正在使用MS sql Server 2008 R2。
我设想输出是这样的:
ID FieldChanged OldValue NewValue
1234类88515 88516
5555状态A I
6789代码321322
解决方法
select * from new_data
inner join old_data on new_data.id = old_data.id where (
new_data.column_1 != new_data.column_1 OR
new_data.column_2 != new_data.column_2 OR
--...
new_data.column_N != new_data.column_N OR
)
或者,您可以在系统表中查询列名,然后从结果中构建查询。