Wie in den Kommentaren erwähnt, handelt es sich um ein klassisches Problem mit Lücken und Inseln.
Eine von Itzik Ben Gan populäre Lösung besteht darin, die Tatsache zu verwenden, dass ROW_NUMBER() OVER (ORDER BY number) - number bleibt innerhalb einer "Insel" konstant und kann nicht auf mehreren Inseln erscheinen.
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:Wenn number ist nicht garantiert eindeutig, ersetzen Sie ROW_NUMBER mit DENSE_RANK im Code oben.