Oracle - Convert value from rows into ranges

前端 未结 3 1633
攒了一身酷
攒了一身酷 2021-01-06 06:23

Are there any techniques that would allow a row set like this

WITH 
base AS
(
    SELECT  1 N FROM DUAL UNION ALL
    SELECT  2 N FROM DUAL UNION ALL
    SEL         


        
3条回答
  •  时光取名叫无心
    2021-01-06 06:29

    Another way:

    WITH base AS  
    (
        SELECT  1 N FROM DUAL UNION ALL
        SELECT  2 N FROM DUAL UNION ALL
        SELECT  3 N FROM DUAL UNION ALL
        SELECT  6 N FROM DUAL UNION ALL
        SELECT  7 N FROM DUAL UNION ALL
        SELECT 17 N FROM DUAL UNION ALL
        SELECT 18 N FROM DUAL UNION ALL
        SELECT 19 N FROM DUAL UNION ALL
        SELECT 21 N FROM DUAL
    )
    select min(n), max(n) from 
      (
        select n, connect_by_root n root from base
        connect by prior n = n-1
        start with n not in (select n from base b 
                             where exists (select 1 from base b1 where b1.n = b.n-1)
                            )
      ) 
      group by root
      order by root
    

提交回复
热议问题