次のクエリを使用できます:
SELECT RaidNo, OutComeID, RN,
CASE
WHEN OutComeID <> 16 THEN 0
ELSE ROW_NUMBER() OVER (PARTITION BY OutComeID, grp ORDER BY RN)
END AS Result
FROM (
SELECT RaidNo, OutComeID, RN,
RN - ROW_NUMBER() OVER (PARTITION BY OutComeID ORDER BY RN) AS grp
FROM mytable) AS t
ORDER BY RN
フィールド grp
同じ OutComeID
を持つ連続したレコードのスライス (アイランドとも呼ばれます) を識別します 価値。外側のクエリは grp
を使用します '16'
に属する各レコードを列挙するために スライス。他のスライスに属するレコードには値 0
が割り当てられます .