Можете да използвате следната заявка:
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
.