我在比較2個表。一個有新的數據,另一個有上個月的舊數據。數據是每月發佈的,每次都是所有數據。沒有PK,任何領域都可以改變。我需要顯示哪些字段及其舊值改變了記錄。它可能是1個或更多的字段。爲此,我創建了內部連接,其中所有字段都連接在1以外,然後在我說的舊值不等於新值的位置,然後添加2列,告訴我我們正在查看的字段以及舊的價值是。我做這個查詢每個字段和工會的結果,所以我的決賽桌的樣子:由一些字段組和其他字段組成
FieldA, FieldB, FieldC, FieldChanged, OldValue
FieldChanged將具有改變該記錄的OldValue和會說什麼老值的字段名。
如果一條記錄有超過1個字段發生了變化(那裏有),那麼我得到Field A-C在結果中被複制,具有不同的FieldChanged和OldValue值。但是,我想通過FieldA,FieldB,FieldC來做一個組,並以某種方式聯繫所有相同記錄中的FieldChanged和所有相同記錄中的OldValue。
聯合查詢結果會是什麼樣子(第3場是新數據的樣子):
"Tiger", "74", "Masters", "FieldC", "The Masters"
"Tiger", "74", "Masters", "FieldB", "68"
我想組由場1-3和CONCAT在過去的2場組:
"Tiger", "74", "Masters", "FieldB,FieldC", "68,The Masters"
現在,這僅僅是一個例子所以它的簡單,可能是說來容易,這是一個新的記錄,但是我的表有12個字段,所以,如果所有的比賽,但1場,它就有可能是相同的記錄,他們只是更新了其中一個字段。
這裏的關鍵是能夠按某些列進行分組,並將來自分組列的其他字段值連接在一起,以便不重複相同的記錄,並且我有1行顯示每條記錄已更改的字段,並且這是舊的價值觀。
只是好奇,爲什麼在東西選擇聲明你只比較哪裏fielda = fielda?我假設你必須爲所有領域做到這一點,而不僅僅是A?爲B和C做呢? – user441521 2014-12-01 17:59:39
@ user441521 - 由於所有的值都是相同的,我沒有添加那些 – 2014-12-01 18:01:19
你是什麼意思,因爲所有的值都是一樣的?如果你的意思是我的小例子(FieldA總是「老虎」),那麼對不起,假設有很多不同的值。所以我假設我需要比較所有。 – user441521 2014-12-01 18:03:38