查询具有更改后的值和新值的列名

问题描述

|| 我有两个表,它们的列完全相同,一个是数据的最新版本,另一个是旧版本。我正在尝试创建一个报告/查询,以告诉我与旧版本相比,新版本中哪个列发生了更改,以及新旧值。多列可以更改值。该表具有一个字段(上次更改日期),以告诉我哪些行已更改,但我不知道更改了什么。 有没有办法做到这一点?我觉得我缺少一些显而易见的东西。我正在使用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
)
或者,您可以在系统表中查询列名,然后从结果中构建查询。