1
これには多くの例がありますが、正確な解決策はまだ見つかりません。ギャップとアイランド列のカウントに基づいて行数を照会/リセットする
私は1と0のシーケンスに基づいて行数をリセットしようとしています。上記の表に
DECLARE @TestTable TABLE (category INT, ts INT,window int)
INSERT INTO @TestTable (category,ts,window)
VALUES (1,1,1),(1,2,1),(1,3,0),(1,4,0),(1,5,1),(1,6,1),(1,7,1),(2,1,0),(2,2,1),(2,3,1),(2,4,1),(2,5,0),(2,6,0),(2,7,1),(2,8,1),(2,9,1),(2,10,1),(2,11,1)
、Iは、カテゴリによって仕切ら1インクリメント行番号列をしたいが、カウントはたびに窓の変更をリセットする必要があります。
SELECT
x.category,
ts,
window,
is_group,
SUM(is_group) OVER (PARTITION BY x.category ORDER BY ts ROWS BETWEEN 1 PRECEDING AND 0 FOLLOWING) * is_group
FROM
(
SELECT
*,
CASE WHEN LAG(window) OVER(PARTITION BY category ORDER BY ts ) = window THEN 1 ELSE 0 END is_group
FROM @TestTable
) x
ORDER BY x.category,ts
このほぼ作品が、最後のストレッチのためには、2よりもさらに行番号をインクリメントしません:私はこれまで持っているベスト
がある
完璧でした。ありがとう –