2011-06-14 45 views
0

我有兩個具有完全相同列的表,一個是最新版本的數據,另一個是以前的版本。我試圖創建一個報告/查詢來告訴我哪個列在新版本中與新舊版本相比發生了變化。多列可以更改值。該表有一個字段(最後更改的日期)告訴我哪些行已經更改,但我不知道發生了什麼變化。查詢具有更改值和新值的列的名稱

有沒有辦法做到這一點?我覺得我錯過了一些顯而易見的東西。我正在開發MS SQL Server 2008 R2。

我設想的輸出是這樣的:

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

回答

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的列名,並建立從結果查詢。

+0

謝謝E.先生,我嘗試了類似的方法,但我想更清楚地顯示哪一列已更改以及更改後的值。這個表格有62列,其中任何一個都可以改變。 – Tanner 2011-06-14 17:44:52

+0

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