数据库中如何使用SQL查询连续号码段

IP心酸柠檬

IP心酸柠檬

2016-01-29 14:42

数据库中如何使用SQL查询连续号码段,数据库中如何使用SQL查询连续号码段

在ITPUB上有一则非常巧妙的SQL技巧,学习一下,记录在这里。

最初的问题是这样的:


我有一个表结构,
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

(第二个字段内可能是连续的数据,可能存在断点。)

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)

怎样能查询出来这样的结果,查询出连续的记录来。
就像下面的这样?
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 /

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)

FPHM START_HM END_HM
---------- -------- --------
2013 00000120 00000122
2013 00000124 00000125
2014 00000001 00000005
2014 00000007 00000009


巧思妙想,就在一念之间。

展开更多 50%)
分享

猜你喜欢

数据库中如何使用SQL查询连续号码段

电脑网络
数据库中如何使用SQL查询连续号码段

SQL查询连续号码段的巧妙解法

编程语言 网络编程
SQL查询连续号码段的巧妙解法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何使用SQL Server数据库嵌套子查询

SQLServer
如何使用SQL Server数据库嵌套子查询

如何使用SQL Server数据库查询累计值

SQLServer
如何使用SQL Server数据库查询累计值

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在Access数据库中如何使用SQL

编程语言 网络编程
在Access数据库中如何使用SQL

通用SQL数据库查询语句精华使用简介

SQLServer
通用SQL数据库查询语句精华使用简介

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用PHP实现标准的IP Whois查询

用PHP实现标准的IP Whois查询

不要忽视Oracle10gSTATSPACK

不要忽视Oracle10gSTATSPACK
下拉加载更多内容 ↓