如风的爱的gravatar头像
如风的爱2017-07-19 19:02:57
sql查询连续日期及连续的天数
create table tmptable(rq datetime)
go
insert 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        5

drop table tmptable
go
<span style="color:rgb(69, 69, 69); font-size:14px">一句sql实现</span>
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
) a
group by a.id1-a.id2
/*
本期起始日期                  本期终止日期                  持续天数        距上一期天数
----------------------- ----------------------- ----------- -----------
2010-01-01 00:00:00.000 2010-01-03 00:00:00.000 3           0
2010-01-06 00:00:00.000 2010-01-07 00:00:00.000 2           3
2010-01-10 00:00:00.000 2010-01-12 00:00:00.000 3           3
2010-01-19 00:00:00.000 2010-01-20 00:00:00.000 2           7
2010-01-22 00:00:00.000 2010-01-23 00:00:00.000 2           2
2010-01-28 00:00:00.000 2010-01-28 00:00:00.000 1           5
警告: 聚合或其他 SET 操作消除了空值。
 
(6 行受影响)
*/

 


打赏

分享到:

最近浏览
1371639686111月25日
暂无贡献等级
weienqing11月17日
最代码贡献等级说明
tuyong10月16日
最代码贡献等级说明
wcy55559月22日
最代码贡献等级说明
4608281739月19日
最代码贡献等级说明
2037785139月13日
最代码贡献等级说明
fengshao0079月7日
暂无贡献等级
q28238659月6日
暂无贡献等级
182028382089月3日
暂无贡献等级
curt201709029月2日
暂无贡献等级
branice9月2日
最代码贡献等级说明
junwuxie9月1日
最代码贡献等级说明
马小跳8月29日
暂无贡献等级
打豆豆8月23日
暂无贡献等级
cxycxy8月21日
最代码贡献等级说明
陌路难飞8月17日
最代码贡献等级说明
庸人自扰8月17日
暂无贡献等级
yzcan8月17日
最代码贡献等级说明
kluanlee8月17日
暂无贡献等级
wdyouwen8月14日
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友