亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 文庫 > 正文

SQL查詢連續號碼段的巧妙解法

2020-10-29 21:51:41
字體:
來源:轉載
供稿:網友

昨天在itpub看到這個帖子, 問題覺得有意思,, 就仔細想了想. 也給出了一種解決辦法..:-)

問題求助,請高手指點..

我有一個表結構,
fphm,kshm
2014,00000001
2014,00000002
2014,00000003
2014,00000004
2014,00000005
2014,00000007
2014,00000008
2014,00000009
2013,00000120
2013,00000121
2013,00000122
2013,00000124
2013,00000125

(第二個字段內可能是連續的數據,可能存在斷點。)

怎樣能查詢出來這樣的結果,查詢出連續的記錄來。

就像下面的這樣?

2014,00000001,00000005
2014,00000009,00000007
2013,00000120,00000122
2013,00000124,00000125

方法一: 引用自hmxxyy.

復制代碼 代碼如下:

SQL> 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

方法二: 使用lag/lead分析函數進行處理.. 樓上的方法確實挺好用就是覺得表掃描/表連接比較多, 可能數據量大了. 速度會比較慢, 當然我的這種方法由于使用分析函數使用的比較頻繁.所以排序量可能比上一種要多..

復制代碼 代碼如下:

SQL> select fphm,lpad(kshm,8,'0') kshm
  2  from t
  3  /

      FPHM KSHM                                                                
---------- ----------------                                                    
      2014 00000001                                                            
      2014 00000002                                                            
      2014 00000003                                                            
      2014 00000004                                                            
      2014 00000005                                                            
      2014 00000007                                                            
      2014 00000008                                                            
      2014 00000009                                                            
      2013 00000120                                                            
      2013 00000121                                                            
      2013 00000122                                                            

      FPHM KSHM                                                                
---------- ----------------                                                    
      2013 00000124                                                            
      2013 00000125                                                            

13 rows selected.

SQL> set echo on
SQL> @bbb.sql
SQL> select fphm,lpad(kshm,8,'0') start_kshm,lpad(prev_prev_kshm,8,'0') end_kshm
  2  from (
  3    select fphm,kshm,next_kshm,prev_kshm,
  4  lag(kshm,1,null) over (partition by fphm order by kshm )next_next_kshm,
  5  lead(kshm,1,null) over (partition by fphm order by kshm ) prev_prev_kshm
  6    from (
  7  select *
  8  from (
  9     select fphm,kshm,
10       lead(kshm,1,null) over (partition by fphm order by kshm) next_kshm,
11       lag(kshm,1,null) over (partition by fphm order by kshm) prev_kshm
12     from t
13  )
14  where ( next_kshm - kshm <> 1 or kshm - prev_kshm <> 1 )
15  or ( next_kshm is null or prev_kshm is null )
16    )
17  )
18  where next_kshm - kshm = 1
19  /

      FPHM START_KSHM       END_KSHM                                           
---------- ---------------- ----------------                                   
      2013 00000120         00000122                                           
      2013 00000124         00000125                                           
      2014 00000001         00000005                                           
      2014 00000007         00000009                                           

SQL> spool off

方法三: 今天早上wildflower給了我這個答案, 頓時覺得耳目一新啊..就貼出來與大家一起共享了^_^.


SQL> spool aaa.log
SQL> set echo on
SQL> select * from t;

no rows selected

SQL> 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

      FPHM       KSHM
---------- ----------
      2013        124
      2013        125

13 rows selected.

SQL> @bbb.sql
SQL> select b.fphm,min(b.kshm),max(b.kshm)
  2  from (
  3          select a.*,to_number(a.kshm-rownum) cc
  4          from (
  5                  select * from t order by fphm,kshm
  6          ) a
  7  )  b
  8  group by b.fphm,b.cc
  9  /

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

SQL>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色爱av美腿丝袜综合粉嫩av| 日韩高清有码在线| 欧美xxxx18国产| 欧美一级淫片videoshd| 美女性感视频久久久| 亚洲国语精品自产拍在线观看| 国产精品男人爽免费视频1| 日韩成人在线电影网| 欧美老少做受xxxx高潮| 国产欧美亚洲视频| 亚洲综合精品伊人久久| 欧美一级视频一区二区| 欧美日韩激情视频| 成人综合国产精品| 精品久久久香蕉免费精品视频| 欧美日韩激情小视频| 黑人极品videos精品欧美裸| 欧美一级成年大片在线观看| 国外色69视频在线观看| 日韩精品免费在线观看| 国产精品亚洲视频在线观看| 欧美巨大黑人极品精男| 国产一区二区在线免费| 亚洲999一在线观看www| 久久777国产线看观看精品| 色婷婷亚洲mv天堂mv在影片| 久久男人的天堂| 国产一区二区三区视频在线观看| 亚洲影院在线看| 欧美一级大片在线观看| 日韩电影大片中文字幕| 欧美肥老太性生活视频| 中文字幕欧美国内| 2021久久精品国产99国产精品| 国外色69视频在线观看| 亚洲精品美女久久久久| 欧美激情亚洲精品| 日韩免费在线免费观看| 日韩中文字幕av| 日韩风俗一区 二区| 成人激情视频在线观看| 国产欧美 在线欧美| 法国裸体一区二区| 欧美国产第一页| 色在人av网站天堂精品| 久久久久久久久久久91| 久久久久国产精品免费网站| 亚洲视频在线观看免费| 亚洲欧美另类自拍| 国产视频在线观看一区二区| 日韩有码视频在线| 97国产一区二区精品久久呦| 日韩电影网在线| 亚洲男女性事视频| 久久精品中文字幕电影| 91在线视频九色| 久久久久久久一区二区三区| 欧美最猛性xxxxx亚洲精品| 成人精品一区二区三区电影免费| 成人午夜在线观看| 欧美怡春院一区二区三区| 久久国产精品久久国产精品| 免费99精品国产自在在线| 91精品视频在线播放| 国产免费一区二区三区在线能观看| 青青a在线精品免费观看| 久久免费视频观看| 在线看日韩av| 欧美精品久久久久久久免费观看| 色与欲影视天天看综合网| 成人伊人精品色xxxx视频| 亚洲视频在线免费观看| 精品色蜜蜜精品视频在线观看| 欧美日韩亚洲国产一区| 国产一区二区三区在线观看网站| 伊人精品在线观看| 国产精品久久久久久亚洲影视| 欧美最近摘花xxxx摘花| 成人国产精品av| 国产精品视频1区| 91久久综合亚洲鲁鲁五月天| 日韩不卡在线观看| 国产一区二中文字幕在线看| 国产精品大片wwwwww| 亚洲国产精品久久久久| 影音先锋欧美在线资源| 日韩在线观看免费高清完整版| 91极品视频在线| 精品久久久一区| 欧美精品久久久久a| 欧美一区二区三区……| 国产男女猛烈无遮挡91| 欧美日韩视频在线| 国产精品久久久久久影视| 九九热最新视频//这里只有精品| 亚洲视频在线观看视频| 97热在线精品视频在线观看| 欧美黑人国产人伦爽爽爽| 日韩高清有码在线| 欧美精品在线免费播放| 国产欧美精品在线播放| 欧美日韩中文字幕在线| 亚洲一区二区三区香蕉| 亚洲人线精品午夜| 最近2019中文字幕大全第二页| 九九久久久久久久久激情| 日韩的一区二区| 精品国产一区二区三区久久久| 欧美色欧美亚洲高清在线视频| 日韩欧美中文字幕在线观看| 国产日韩中文字幕在线| 2019av中文字幕| 日韩欧美一区视频| 精品国产拍在线观看| 91美女片黄在线观| 亚洲欧美国产一本综合首页| 色噜噜亚洲精品中文字幕| 一区二区三区国产在线观看| 国产成人精品免费久久久久| 2020久久国产精品| 欧美第一黄网免费网站| 精品在线观看国产| 成人精品一区二区三区电影黑人| 精品久久久久久久久国产字幕| 日韩精品在线视频| 国产精品久久久久久久久免费| 在线播放日韩欧美| 日韩激情第一页| 日韩欧美黄色动漫| 亚洲一区二区三区xxx视频| 成人免费大片黄在线播放| 亚洲www在线| 亚洲xxxx在线| 97国产精品免费视频| 欧美日韩人人澡狠狠躁视频| 亚洲深夜福利在线| 国产一区红桃视频| 国产精品久久久久久久久久99| 欧美一性一乱一交一视频| 日韩av在线一区| 欧美激情videos| 黑人与娇小精品av专区| 亚洲最大的成人网| 亚洲xxxx3d| 成人免费福利视频| 国产日韩欧美在线看| 韩国精品久久久999| 日韩中文字幕视频在线| 国产精品www| 久久夜色精品亚洲噜噜国产mv| 69av视频在线播放| 国产精品欧美亚洲777777| 久久综合久久美利坚合众国| 97香蕉超级碰碰久久免费软件| 精品久久久久久国产| 亚州精品天堂中文字幕| 成人xxxx视频| 国产精品三级网站| 亚洲福利影片在线| 中文字幕亚洲一区二区三区| 亚洲天堂成人在线| 播播国产欧美激情| 久久精品久久久久久| 亚洲尤物视频网|