2016-08-03 161 views
-1

我需要查找一個有效的查詢來計算每個歷史記錄表項的字段更改數。TSQL查詢歷史記錄表字段更改計數

在每一個客戶表的所有數據值的變化,記錄的副本進入歷史表的時間。

我想要一種方法來統計歷史表中每個條目的更改數量。每個字段將比較當前條目和前一條目以確定差異。

有沒有很好的方法來做到這一點?沒有sproc?

enter image description here

+0

截圖幫助,但一些樣本數據會吸引更多的關注。 –

回答

0

您可以開始做如下所示。我目前沒有SQL Server環境,無法驗證一切是否正確。

WITH cte AS (
     SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY CustomerID ORDER BY ID) 
     FROM CustomerHistory 
    ) 
    SELECT 
     c1.*, 
     FieldChangeCount = 
      (CASE WHEN c1.ServiceLevel <> c2.ServiceLevel THEN 1 ELSE 0 END) 
      + 
      (CASE WHEN c1.Status <> c2.Status THEN 1 ELSE 0 END)  
    FROM cte c1 
    LEFT JOIN cte c2 
      ON c1.CustomerID = c2. CustomerID 
      AND c2.rn = c1.rn - 1 
    ORDER BY c1.LogID 
+0

這個工作幾乎完美,謝謝。我需要將ORDER BY GROUP BY更改爲PARTITION BY ORDER BY,但是......真的有所幫助。謝謝。 – Wendi

+0

@Wendi,我用正確的語法更新了答案,很高興幫助。 – EricZ