TSQL查询历史记录表字段更改计数
我需要找到一个有效的查询来计算每个历史表条目的字段更改数 每次客户表中的任何数据值发生更改时,都会在历史记录表中输入一份记录副本 我想要一种方法来计算历史记录表中每个条目的更改数。每个字段将比较当前条目和前一条目以确定差异 有什么好办法吗?没有狂欢TSQL查询历史记录表字段更改计数,sql,tsql,aggregate,sql-server-2014,rollup,Sql,Tsql,Aggregate,Sql Server 2014,Rollup,我需要找到一个有效的查询来计算每个历史表条目的字段更改数 每次客户表中的任何数据值发生更改时,都会在历史记录表中输入一份记录副本 我想要一种方法来计算历史记录表中每个条目的更改数。每个字段将比较当前条目和前一条目以确定差异 有什么好办法吗?没有狂欢 你可以从下面开始。我目前没有SQL Server环境,无法验证是否一切正常 WITH cte AS ( SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY CustomerID ORDE
你可以从下面开始。我目前没有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
屏幕截图有帮助,但一些示例数据会吸引更多的注意力。这几乎完美地工作了,谢谢。我需要将“按组按顺序”更改为“按顺序按分区”,但是。。。这确实有帮助。谢谢。@Wendi,我用正确的语法更新了答案,很高兴能帮上忙。