Som nævnt i kommentarerne er dette et klassisk problem med huller og øer.
En løsning populariseret af Itzik Ben Gan er at bruge det faktum, at ROW_NUMBER() OVER (ORDER BY number) - number
forbliver konstant inden for en "ø" og kan ikke vises på flere øer.
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:Hvis number
er ikke garanteret at være unik, erstat ROW_NUMBER
med DENSE_RANK
i koden ovenfor.