次の形式のテーブルがあります。
cId seq
--- ---
A 1
A 2
A 4
A 5
B 8
B 9
A 12
A 13
次のような別のテーブルを生成するクエリを作成したいと思います。
cId seq consecutive
--- --- -----------
A 1 1
A 2 1
A 4 2
A 5 2
B 8 3
B 9 3
A 12 4
A 13 4
私がやろうとしているのは、同じ cId を持つ連続した seq 値を識別し、それらに番号を付けることです。
Lag 関数を使用して前の seq 値を決定し、連続する列を設定することを考えていましたが、次のブレークに遭遇したときに値をインクリメントする方法がわかりません。
SELECT [cId],
[Seq],
CASE WHEN [Seq] - 1 = LAG([Seq], 1, [Seq]) OVER ( ORDER BY [Seq]) THEN 1
ELSE 2 END as consecutive
FROM #ConsecutiveData
このクエリは、各シーケンスの開始の隣に 2 を置きます。それは私が来た最も近いものです。