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

时间:2011-06-14 17:32:50

标签: sql

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

有办法做到这一点吗?我觉得我错过了一些显而易见的事情。我正在研究MS SQL Server 2008 R2。

我设想输出是这样的:

ID       FieldChanged     OldValue    NewValue
1234     Class            88515       88516
5555     Status           A           I
6789     Code             321         322

1 个答案:

答案 0 :(得分:0)

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查询列名并从结果中构建查询。