Bạn có thể sử dụng truy vấn sau:
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
Trường grp
xác định các lát (còn gọi là đảo) của các bản ghi liên tiếp có cùng OutComeID
giá trị. Truy vấn bên ngoài sử dụng grp
để liệt kê từng bản ghi thuộc về '16'
lát cắt. Các bản ghi thuộc về các phần khác được gán giá trị 0
.