履歴テーブルエントリごとのフィールドの変更回数をカウントする効率的なクエリを見つける必要があります。TSQLクエリの履歴テーブルフィールドの変更回数
顧客テーブルでデータ値が変更されるたびに、レコードのコピーが履歴テーブルに入力されます。
エントリごとの変更数を履歴テーブルに数える方法があります。各フィールドは、現在のエントリと以前のエントリとを比較して差異を判断する。
これを行うには良い方法がありますか? sprocなしで?
履歴テーブルエントリごとのフィールドの変更回数をカウントする効率的なクエリを見つける必要があります。TSQLクエリの履歴テーブルフィールドの変更回数
顧客テーブルでデータ値が変更されるたびに、レコードのコピーが履歴テーブルに入力されます。
エントリごとの変更数を履歴テーブルに数える方法があります。各フィールドは、現在のエントリと以前のエントリとを比較して差異を判断する。
これを行うには良い方法がありますか? sprocなしで?
次のような何かを始めることができます。私はこの時点で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
スクリーンショットが役立ちますが、いくつかのサンプルデータが注目を集めます。 –