2016-08-03 116 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