单条SQL-断层问题

Posted by 道行尚浅 on January 8, 2018

一个连续的数列,从中间删除部分数据,取剩余连续数列的起止位置


create table duan_ceng 
as 
select rownum c1 
 from dual 
connect by level <=100 ;

delete from duan_ceng where c1 in (20,45,79) ;

求各连续字段的起始结束位置 即:

起始值 结束值
1 19
21 44
46 78
80 100
select min(c1), max(c1)
  from (select c1, c1 - row_number() over(order by c1) cha from duan_ceng)
 group by cha
 order by 1


   MIN(C1)    MAX(C1)
---------- ----------
         1         19
        21         44
        46         78
        80        100