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

问题描述:

我有两个具有完全相同列的表,一个是最新版本的数据,另一个是以前的版本。我试图创建一个报告/查询来告诉我哪个列在新版本中与新旧版本相比发生了变化。多列可以更改值。该表有一个字段(最后更改的日期)告诉我哪些行已经更改,但我不知道发生了什么变化。查询具有更改值和新值的列的名称

有没有办法做到这一点?我觉得我错过了一些显而易见的东西。我正在开发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的列名,并建立从结果查询。

+0

谢谢E.先生,我尝试了类似的方法,但我想更清楚地显示哪一列已更改以及更改后的值。这个表格有62列,其中任何一个都可以改变。 – Tanner 2011-06-14 17:44:52

+0

已更新,稍微... – YXD 2011-06-14 19:31:13