SQL 查询历史 table 字段更改计数
TSQL query history table field change count
我需要找到一个有效的查询来计算每个历史 table 条目的字段更改次数。
每次客户 Table 中的任何数据值发生变化时,都会将记录的副本输入历史记录 table。
我想要一种方法来计算历史记录中每个条目的更改次数 table。每个字段都会将当前条目与先前条目进行比较以确定差异。
有什么好的方法吗?没有存储过程?
您可以开始以下内容。我暂时没有SQL服务器环境,无法验证是否一切正确。
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
我需要找到一个有效的查询来计算每个历史 table 条目的字段更改次数。
每次客户 Table 中的任何数据值发生变化时,都会将记录的副本输入历史记录 table。
我想要一种方法来计算历史记录中每个条目的更改次数 table。每个字段都会将当前条目与先前条目进行比较以确定差异。
有什么好的方法吗?没有存储过程?
您可以开始以下内容。我暂时没有SQL服务器环境,无法验证是否一切正确。
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