sql找出连续日期和连续数字
tips:
1 代码在sqlserver2005实现,其他数据需要经过修改
2 计算连续时间和连续数字是同一类问题,所以合起来一起说,计算连续时间的时候只不过将时间转换成数字而已
3 此方法相对高效
第一步
构造数据
create table #tmptable(id int identity(1,1),rq smalldatetime)
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")
第二步
临时中间表
select id,rq,datediff(d,(select min(rq) from #tmptable),rq)+1 idd into #tp from
第三步
select y.rq,x.rq,datediff(d,y.rq,x.rq)+1 dtdf from
(
select min(a.idd) as minid, max(a.idd) as maxid
from
(
select idd, (idd - row_number() over(order by idd asc)) id_diff
from
#tp c
) a
group by a.id_diff
) z
left join #tp y
on z.minid=y.idd
left join #tp x
on z.maxid=x.idd
- 上一篇: iOS的文件读写
- 下一篇: MySQL5.6.12造成CPU的使用率 2000%的原因