Vous pouvez utiliser la requête suivante :
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
Champ grp
identifie des tranches (également appelées îlots) d'enregistrements consécutifs ayant le même OutComeID
évaluer. La requête externe utilise grp
afin d'énumérer chaque enregistrement qui appartient à un '16'
tranche. Les enregistrements appartenant aux autres tranches sont affectés de la valeur 0
.