首页 > 解决方案 > 如何打破序列

问题描述

我有一个名为sequence的表,其中有一列val和表看起来像

val
-----
1
2
3
5
8
9
10

如果序列中有中断并输出,我需要确定数字范围

range_start    range_end
-----------    ----------
1              3
5              5
8              10

标签: sqloracleoracle11g

解决方案


减去一个递增的序列,您将得到一个序列值的常数。然后聚合:

select min(val), max(val)
from (select val, row_number() over (order by val) as seqnum
      from t
     ) t
group by (val - seqnum);

推荐阅读