zoukankan      html  css  js  c++  java
  • Oracle中实现sql查询得到连续号码段

    一、表名为t的表中数据如下:

    select * from t;
          FPHM       KSHM
    ---------- ----------
          2014          1
          2014          2
          2014          3
          2014          4
          2014          5
          2014          7
          2014          8
          2014          9
          2013        120
          2013        121
          2013        122
          2013        124
          2013        125

    实现代码如下:

    select b.fphm,min(b.kshm),max(b.kshm)
        from (
                select a.*,to_number(a.kshm-rownum) cc
                from (
                        select * from t order by fphm,kshm
                ) a
        )  b
        group by b.fphm,b.cc

    结果如下:

    FPHM            MIN(B.KSHM)   MAX(B.KSHM)
    ---------- ----------- ------------------
          2013         120         122
          2013         124         125
          2014           1           5
          2014           7           9
    

    ------------------------------------------------------------------------------------------------------------------------

    二、表名为gap的表中数据如下:

    select * from gap;
    
    ID SEQ
    ---------- ----------
    1 1
    1 4
    1 5
    1 8
    2 1
    2 2
    2 9

    实现代码如下:

    select res1.id, res2.seq str, res1.seq end
    from (
        select rownum rn, c.*
        from (
            select *
            from gap a
            where not exists (
                select null from gap b where b.id = a.id and a.seq = b.seq - 1
            )
            order by id, seq
        ) c
    ) res1, (
        select rownum rn, d.*
        from (
            select *
            from gap a
            where not exists (
                select null from gap b where b.id = a.id and a.seq = b.seq + 1
            )
            order by id, seq
        ) d
    ) res2
    where res1.id = res2.id
    and res1.rn = res2.rn

    结果如下:

    ID STR END
    --------- ---------- ----------
    1 1 1
    1 4 5
    1 8 8
    2 1 2
    2 9 9
  • 相关阅读:
    【Loj146】DFS序3-树链剖分
    【BZOJ3083】遥远的国度- 树剖-换根
    树链剖分-树剖换根
    c++ 随机生成树
    【HAOI2015】树上操作-树链剖分
    centos修改dns
    HttpClient
    aiax跨域问题
    伪静态
    springboot父子项目
  • 原文地址:https://www.cnblogs.com/hzjdpawn/p/12134359.html
Copyright © 2011-2022 走看看