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

दो स्तंभों के बीच की संख्याओं की सूची प्राप्त करें

यदि आप चाहते थे कि मान अल्पविराम से अलग हो जाएं तो आप ऐसा कर सकते हैं (या यदि 11gr2 पर listAgg )

WITH NUMS AS(
     SELECT 10 STARTNR  , 15 ENDNR  FROM DUAL UNION
    SELECT 18 STARTNR  , 22 ENDNR  FROM DUAL UNION
    SELECT 34 STARTNR  , 50 ENDNR  FROM DUAL )       , 
 NUMSBETWEEN AS(
     SELECT distinct (level + startnr)-1 seq , startnr, endnr
       FROM NUMS
      CONNECT BY (LEVEL +STARTNR ) <= ENDNR+1
      )
SELECT startnr,
       LTRIM(MAX(SYS_CONNECT_BY_PATH(seq,','))
       KEEP (DENSE_RANK LAST ORDER BY curr),',') AS seq
FROM   (SELECT startnr,
               seq,
               ROW_NUMBER() OVER (PARTITION BY startnr ORDER BY seq) AS curr,
               ROW_NUMBER() OVER (PARTITION BY startnr ORDER BY seq) -1 AS prev
        FROM   numsBetween)
GROUP BY startnr
CONNECT BY prev = PRIOR curr AND startnr = PRIOR startnr
START WITH CURR = 1;

STARTNR SEQ

10 10,11,12,13,14,15
18 18,19,20,21,22
34 34,35,36,37,38,39,40,41,42,43 ,44,45,46,47,48,49,50



  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. ऑरैकल से क्वेरी ढूँढना जो सत्र को रोक रहा है

  3. ORA-06530:अप्रारंभीकृत समग्र का संदर्भ

  4. टॉप एन और बॉटम नंबर चुनें

  5. Oracle फ़ंक्शन उदाहरण दो तिथियों के बीच दिनों की संख्या प्राप्त करने के लिए