我需要找到一个有效的查询来计算每个历史表条目的字段更改次数。
每次客户表中的任何数据值发生变化时,记录的副本都会输入到历史记录表中。
我想要一种方法来计算历史表中每个条目的更改数量。每个字段将比较当前条目与前一个条目以确定差异。
这样做有好办法吗?没有sproc?
答案 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