博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL经典问题 找出连续日期及连续的天数
阅读量:5325 次
发布时间:2019-06-14

本文共 1835 字,大约阅读时间需要 6 分钟。

转自:http://bbs.csdn.net/topics/360019248

如何取到每段连续日期的起始终止日期以及持续天数及起始日期距上一期终止日期的天数,能否用一句sql实现?

备注:数据库环境是sql server 2000

create table tmptable(rq datetime)goinsert tmptable values('2010.1.1')insert tmptable values('2010.1.2')insert tmptable values('2010.1.3')insert tmptable values('2010.1.6')insert tmptable values('2010.1.7')insert tmptable values('2010.1.10')insert tmptable values('2010.1.11')insert tmptable values('2010.1.12')insert tmptable values('2010.1.19')insert tmptable values('2010.1.20')insert tmptable values('2010.1.22')insert tmptable values('2010.1.23')insert tmptable values('2010.1.28')go---希望得到的结果--本期起始日期 本期终止日期  持续天数 距上一期天数--2010.1.1     2010.1.3      3        0--2010.1.6     2010.1.7      2        3--2010.1.10    2010.1.12     3        3--2010.1.19    2010.1.20     2        7--2010.1.22    2010.1.23     2        2--2010.1.28    2010.1.28     1        5drop table tmptablego

一句sql实现

select 本期起始日期=min(rq),本期终止日期=max(rq),持续天数=max(id1)-min(id1)+1,    距上一期天数=case a.id1-a.id2 when -1 then 0 else max(datediff(d,rq2,rq)) end from (    select id1=datediff(d,'2010-01-01',rq),id2=(select count(1) from tmptable where rq <= a.rq),rq2=(select max(rq) from tmptable where rq < a.rq),* from tmptable a) agroup by a.id1-a.id2/*本期起始日期                  本期终止日期                  持续天数        距上一期天数----------------------- ----------------------- ----------- -----------2010-01-01 00:00:00.000 2010-01-03 00:00:00.000 3           02010-01-06 00:00:00.000 2010-01-07 00:00:00.000 2           32010-01-10 00:00:00.000 2010-01-12 00:00:00.000 3           32010-01-19 00:00:00.000 2010-01-20 00:00:00.000 2           72010-01-22 00:00:00.000 2010-01-23 00:00:00.000 2           22010-01-28 00:00:00.000 2010-01-28 00:00:00.000 1           5警告: 聚合或其他 SET 操作消除了空值。 (6 行受影响)*/

 

转载于:https://www.cnblogs.com/Joetao/articles/3842242.html

你可能感兴趣的文章
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
Windows Phone开发(5):室内装修 转:http://blog.csdn.net/tcjiaan/article/details/7269014
查看>>
详谈js面向对象 javascript oop,持续更新
查看>>
关于这次软件以及pda终端的培训
查看>>
jQuery上传插件Uploadify 3.2在.NET下的详细例子
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
新手村之循环!循环!循环!
查看>>
ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath
查看>>
正则表达式的用法
查看>>
线程安全问题
查看>>
集合的内置方法
查看>>
IOS Layer的使用
查看>>
Android SurfaceView实战 带你玩转flabby bird (上)
查看>>
Android中使用Handler造成内存泄露的分析和解决
查看>>
SSM集成activiti6.0错误集锦(一)
查看>>