Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सन्निहित अनुक्रमिक संख्याओं के समूहों की सीमाओं का पता कैसे लगाएं?

जैसा कि टिप्पणियों में उल्लेख किया गया है, यह एक क्लासिक अंतराल और द्वीपों की समस्या है।

इट्ज़िक बेन गण द्वारा लोकप्रिय समाधान इस तथ्य का उपयोग करना है कि 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 . के साथ उपरोक्त कोड में।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में एक स्ट्रिंग के भीतर एक स्ट्रिंग कैसे खोजें?

  2. SQL सर्वर मास्टर डेटाबेस को पुनर्स्थापित करना

  3. SQL सर्वर तालिकाओं को संयोजित करने और उन्हें ASP.NET वेबफ़ॉर्म में प्रदर्शित करने के लिए INNER JOIN का उपयोग करना

  4. परिणामसेट का उपयोग करके एकाधिक रिकॉर्ड प्रदर्शित करना

  5. एसक्यूएल सर्वर (टी-एसक्यूएल उदाहरण) में सभी अक्षम जांच बाधाओं को कैसे वापस करें