查询具有更改值和新值的列的名称
问题描述:
我有两个具有完全相同列的表,一个是最新版本的数据,另一个是以前的版本。我试图创建一个报告/查询来告诉我哪个列在新版本中与新旧版本相比发生了变化。多列可以更改值。该表有一个字段(最后更改的日期)告诉我哪些行已经更改,但我不知道发生了什么变化。查询具有更改值和新值的列的名称
有没有办法做到这一点?我觉得我错过了一些显而易见的东西。我正在开发MS SQL Server 2008 R2。
我设想的输出是这样的:
ID FieldChanged OldValue NewValue 1234 Class 88515 88516 5555 Status A I 6789 Code 321 322
答
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
)
或者,你可以查询system tables的列名,并建立从结果查询。
谢谢E.先生,我尝试了类似的方法,但我想更清楚地显示哪一列已更改以及更改后的值。这个表格有62列,其中任何一个都可以改变。 – Tanner 2011-06-14 17:44:52
已更新,稍微... – YXD 2011-06-14 19:31:13