Seperti yang disebutkan dalam komentar, ini adalah masalah kesenjangan dan pulau klasik.
Solusi yang dipopulerkan oleh Itzik Ben Gan adalah dengan menggunakan fakta bahwa ROW_NUMBER() OVER (ORDER BY number) - number
tetap konstan dalam "pulau" dan tidak dapat muncul di banyak pulau.
WITH T
AS (SELECT ROW_NUMBER() OVER (ORDER BY number) - number AS Grp,
number
FROM mytable
WHERE status = 0)
SELECT MIN(number) AS [From],
MAX(number) AS [To]
FROM T
GROUP BY Grp
ORDER BY MIN(number)
NB:Jika number
tidak dijamin unik menggantikan ROW_NUMBER
dengan DENSE_RANK
pada kode di atas.