Możesz użyć następującego zapytania:
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
Pole grp
identyfikuje plasterki (zwane również wyspami) kolejnych rekordów o tym samym OutComeID
wartość. Zapytanie zewnętrzne używa grp
w celu wyliczenia każdego rekordu, który należy do '16'
plasterek. Rekordy należące do innych plasterków mają przypisaną wartość 0
.