sql >> Databáze >  >> RDS >> Oracle

získat seznam čísel mezi dvěma sloupci

pokud byste chtěli hodnoty oddělené čárkou, můžete to udělat jako takové (nebo pokud na 11gr2 použijte 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. Vyberte produkty podle více atributů pomocí AND místo toho NEBO zřetězení, datového modelu EAV

  2. 🆕 SQL Server 2022 První pohled – 5 nejlepších nových funkcí (Bonus 5 funkcí)

  3. JDBC PreparedStatement - Použití stejného argumentu, je to možné?

  4. ListView neukazuje správné obrázky, které jsou ve výkresu podle jejich názvu ve sqlite