如果某列是数字,如何取记录集的一列判断是否连续

解决方案 »

  1.   

    lead(exp_str,offset,defval) over(order by col1)计算差值或者用row_number()
      

  2.   


    如果差值c2都是1的话 表示这一系列数据 都是连续的 否则..with t1 as
    (
         select 1 c1 from dual union all
         select 2 c1 from dual union all
         select 3 c1 from dual union all
         select 4 c1 from dual union all
         select 6 c1 from dual 
    )select c1,c1-lag(c1) over(order by c1) c2
    from t1     c1    c2
    ---------------------------
    1 1
    2 2 1
    3 3 1
    4 4 1
    5 6 2
      

  3.   

    不够专业了 格式..lag(c1) over(order by c1) 根据分组和排序 取出这个数据的前一个数据
    with t1 as
    (
         select 1 c1 from dual union all
         select 2 c1 from dual union all
         select 3 c1 from dual union all
         select 4 c1 from dual union all
         select 6 c1 from dual 
    )select c1,c1-lag(c1) over(order by c1) c2
    from t1     c1    c2
    ---------------------------
    1 1
    2 2 1
    3 3 1
    4 4 1
    5 6 2
      

  4.   

    假如字段为c 先排序再用row_number() r   然后select * from table where c=r  如果记录数和先前记录数一样  就是连续的了 
      

  5.   

    我的方法是,查第一个和最后一个是不是对的,然后for循环+if