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