Sql server 确定SQL Server中的连续日期计数
我有一些数据如下所示:Sql server 确定SQL Server中的连续日期计数,sql-server,Sql Server,我有一些数据如下所示: id date -------------------------------- 123 2013-04-08 00:00:00.000 123 2013-04-07 00:00:00.000 123 2013-04-06 00:00:00.000 123 2013-04-04 00:00:00.000 123 2013-04-03 00:00:00.000 我需要返回给定ID的最近连续日期条纹计数,在本例中,对于ID123,该计数
id date
--------------------------------
123 2013-04-08 00:00:00.000
123 2013-04-07 00:00:00.000
123 2013-04-06 00:00:00.000
123 2013-04-04 00:00:00.000
123 2013-04-03 00:00:00.000
我需要返回给定ID的最近连续日期条纹计数,在本例中,对于ID
123
,该计数为3
。我不知道这是否可以在SQL中完成。有什么建议吗?方法是将一系列数字相减,然后取差。这是一个日期序列的常数。以下是获取id的所有序列长度的示例:
select id, grp, count(*) as NumInSequence, min(date), max(date)
from (select t.*,
(date - row_number() over (partition by id order by date)) as grp
from data t
) t
group by id, grp
要获得最长的一个,我将再次使用行编号()
select t.*
from (select id, grp, count(*) as NumInSequence,
min(date) as mindate, max(date) as maxdate,
row_number() over (partition by id order by count(*) desc) as seqnum
from (select t.*,
(date - row_number() over (partition by id order by date)) as grp
from data t
) t
group by id, grp
) t
where seqnum = 1