學習-SQL查詢連續號碼段的巧妙解法
在ITPUB上有一則非常巧妙的SQL技巧,學習一下,記錄在這裡。[@more@]
最初的問題是這樣的:
我有一個表結構,
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
ITPUB上的朋友給出了一個非常巧妙的答案:
SQL> SELECT b.fphm, MIN (b.kshm) Start_HM, MAX (b.kshm) End_HM
2 FROM (SELECT a.*, TO_NUMBER (a.kshm - ROWNUM) cc
3 FROM (SELECT *
4 FROM t
5 ORDER BY fphm, kshm) a) b
6 GROUP BY b.fphm, b.cc
7 /FPHM START_HM END_HM
---------- -------- --------
2013 00000120 00000122
2013 00000124 00000125
2014 00000001 00000005
2014 00000007 00000009
巧思妙想,就在一念之間。
ITPUB其他參考連結如下:http://blog.itpub.net/post/5042/27936
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/73920/viewspace-1004016/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉 SQL查詢連續號碼段的巧妙解法SQL
- SQL查詢連續號碼段的解法(例項)SQL
- 分組查詢連線號段
- go 連線資料庫 - GORM學習 - sql查詢Go資料庫ORMSQL
- SQL時間段查詢SQL
- MySQL學習-連線查詢MySql
- SQL 如何查詢連續上漲 N 次的記錄SQL
- 【學習】SQL基礎-006-多表連線查詢SQL
- jdbc如何連續查詢?JDBC
- SQL連線查詢SQL
- SQL學習(三) 複雜查詢SQL
- FastHook——實現.dynsym段和.symtab段符號查詢ASTHook符號
- MySQL學習(三) SQL基礎查詢MySql
- 查詢字串中連續出現的字元字串字元
- 連續段DP
- 資料庫學習(四)連線查詢資料庫
- sql 連線查詢例項(left join)三表連線查詢SQL
- 【學習】SQL基礎-007-子查詢SQL
- 資料結構-單連結串列查詢按序號查詢資料結構
- 【資料庫】sql連表查詢資料庫SQL
- Sql Server系列:多表連線查詢SQLServer
- SQL複雜查詢多表連線SQL
- SQL總結(二)連表查詢SQL
- 「複製帶隨機指標的連結串列」的一個很巧妙解法隨機指標
- SQL裡3個表的連線查詢SQL
- SQL中多條件查詢括號的用途SQL
- SQL實戰從在職到離職(1) 如何處理連續查詢SQL
- oracle 查詢什麼sql佔用臨時段OracleSQL
- 一個SQL查詢連續三天的流量100以上的資料值【SQql Server】SQLServer
- sql查詢學習和實踐點滴積累SQL
- SQL查詢的:子查詢和多表查詢SQL
- 一段後臺C#查詢SQL Server資料庫程式碼C#SQLServer資料庫
- 第二章 :查詢與排序-------二分查詢的遞迴解法排序遞迴
- 【SQL 學習】層次化查詢之CONNECT BY 和 START WITHSQL
- sql查詢入門練習題SQL
- 對DBGrid 的巧妙用法實現查詢 (轉)
- linux下查詢無效的符號連線(轉)Linux符號
- MYSQL學習筆記25: 多表查詢(子查詢)[標量子查詢,列子查詢]MySql筆記