जैसा कि टिप्पणियों में उल्लेख किया गया है, यह एक क्लासिक अंतराल और द्वीपों की समस्या है।
इट्ज़िक बेन गण द्वारा लोकप्रिय समाधान इस तथ्य का उपयोग करना है कि ROW_NUMBER() OVER (ORDER BY number) - number
एक "द्वीप" के भीतर स्थिर रहता है और कई द्वीपों में प्रकट नहीं हो सकता है।
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)
ध्यान दें:यदि number
ROW_NUMBER
. के अद्वितीय स्थानापन्न होने की गारंटी नहीं है DENSE_RANK
. के साथ उपरोक्त कोड में।