当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 实例讲解SQL查询连续号码段的巧妙解法

MSSQL
SQL Server中选出指定范围行的SQL语句写法
Microsoft SQL Server 2000安装问题集锦
修改SQL Server 2005 sa用户密码的方法
SQL Server数据库查询优化的常用方法总结
两种与SQL Server数据库交换数据的方法
Sun正式发布MySQL 5.1版 简化数据库应用
使用SQL Server 2008中对象相关性
SQL注入防御:用三种策略应对SQL注入攻击
SQL Server 2005 SP3正式版
MySQL数据库中使用GRANT语句增添新用户
讲解数据库加密技术的功能特性与实现方法
如何在SQL Server数据库中加密数据
30步检查SQL Server安全列表
在SQL Server数据库开发中的十大问题
向外扩展SQL Server 实现更高扩展性
SQL Server 2005 五个动态管理对象
从算法入手讲解SQL Server的典型示例
如何解决SQLServer占内存过多的问题
SQL指令植入式攻击的危害及其防范措施
SQL游标原理和使用方法

MSSQL 中的 实例讲解SQL查询连续号码段的巧妙解法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 67 ::
收藏到网摘: n/a

本文介绍了一则非常巧妙的SQL技巧,具体内容请参考下文:

问题如下:

有一个表结构:

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

如何才能查询出来这样的结果,查询出连续的记录来。

类似下面这个示例:

以下为引用的内容:

2014,00000001,00000005

2014,00000009,00000007

2013,00000120,00000122

2013,00000124,00000125

下面是一个很巧妙的解决方法:

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