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

在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 
(第二个字段内可能是连续的数据,可能存在断点。)
怎样能查询出来这样的结果,查询出连续的记录来。
就像下面的这样?
2014,00000001,00000005
2014,00000009,00000007
2013,00000120,00000122
2013,00000124,00000125
ITPUB上的朋友给出了一个非常巧妙的答案:
SELECT b.fphm, MIN (b.kshm) Start_HM, MAX (b.kshm) End_HM
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

时间: 2024-10-27 10:41:29

SQL查询连续号码段的巧妙解法_MsSql的相关文章

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  (第二个

SQL查询连续号码段的巧妙解法_数据库其它

昨天在itpub看到这个帖子, 问题觉得有意思,, 就仔细想了想. 也给出了一种解决办法..:-) 问题求助,请高手指点.. 我有一个表结构,fphm,kshm2014,000000012014,000000022014,000000032014,000000042014,000000052014,000000072014,000000082014,000000092013,000001202013,000001212013,000001222013,000001242013,00000125

学习t-SQL查询连续号码段的巧妙解法

在ITPUB上有一则非常巧妙的SQL技巧,学习一下,记录在这里. 最初的问题是这样的: 我有一个表结构, fphm,kshm2014,000000012014,000000022014,000000032014,000000042014,000000052014,000000072014,000000082014,000000092013,000001202013,000001212013,000001222013,000001242013,00000125 (第二个字段内可能是连续的数据,可能

SQL查询连续号码段实现实例

下文将教您在数据库中如何使用SQL查询连续号码段的方法,供您参考,如果您对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

SQL 查询分析中使用net命令问题_MsSql

在DOS命令下(或Bat文件)执行: net use \\192.168.100.1\ipc$ ks-c-001-11 /user:administrator COPY \\192.168.100.1\xm\XM\SALE_DBC.* c:\temp /y COPY \\192.168.100.1\xm\XM\sale07.* c:\temp /y COPY \\192.168.100.1\xm\XM\sale10.* c:\temp /y COPY \\192.168.100.1\xm\XM\

SQL查询语句对象化的实现(C#)

对象|语句   在开发数据库应用的过程难免会编写大量的SQL语句,其中大部份是查询语句:为不同情况编写查询语句是一件很烦琐的事件.用过hibernate或Nhibernate会了解到把SQL查询语句对象化后使用起非常方便和快捷:也大大减少在编写查询SQL语句所带来的错误等问题.        前段时间在编写一个数据处理类的时候同样遇到这个问题,经过一段时间思考和设计现实现了SQL查询语句对象化的功能:在这里我把自己小小的成果共享一下. 在讲解前先看几个例子(数据是SQLServer的Northw

dataset-C#执行SQL查询Access,,求大神指点

问题描述 C#执行SQL查询Access,,求大神指点 select ForceArea,UnifiedCode_5,(adminArea_8 & adminArea_81) as local,location_71,location_72 from Debris_flow_1 用C#执行这段sql语句的时候,将结果赋值给DataSet,access数据库可以执行,可是在程序里就不执行了,其中要注意哪些??求大神指点 public static DataSet DS(string SQL) {

sql查询-SQL查询同一天不同时刻的数据

问题描述 SQL查询同一天不同时刻的数据 rt,我要把相同一天的数据都放在一起,不知道如何去用SQL去查询 下面是例子: 2015/05/01 02:00 2015/05/01 05:30 2015/05/01 18:00 2015/05/03 13:00 2015/05/03 16:00 2015/05/06 01:00 2015/05/06 11:00 2015/05/06 21:28 解决方案 就是一个行合并的问题http://blog.csdn.net/adensky/article/d

基于Renascence架构的SQL查询引擎设计

基于Renascence架构的sqlite查询优化 sqlite查询优化方案是一开始是在Hw时设计的,但当时只实现一些简单case,并未完成sql的普遍支持.后面考虑到这可以做为 Renascence 架构的一个实验场景,因此将其方案做了一番修改,代码也重写了一遍,现在做成一个能支持普通sql查询的demo. sqlite架构 参考:http://wiki.dzsc.com/info/7440.html sqlite是移动设备广泛使用的轻量级数据库引擎.它主要由前端--虚拟机--后端三部分组成,