我正在尝试对连续的日期范围进行分组以显示每个范围的最小和最大日期。到目前为止,我使用了与此类似的解决方案:http ://www.sqlservercentral.com/articles/T-SQL/71550/但是我使用的是 SQL 2000,所以我必须进行一些更改。到目前为止,这是我的程序:
create table #tmp
(
date smalldatetime,
rownum int identity
)
insert into #tmp
select distinct date from testDates order by date
select
min(date) as dateRangeStart,
max(date) as dateRangeEnd,
count(*) as dates,
dateadd(dd,-1*rownum, date) as GroupID
from #tmp
group by dateadd(dd,-1*rownum, date)
drop table #tmp
它完全按照我想要的方式工作,除了一个问题:周末。我的数据集没有周末日期的记录,这意味着找到的任何组最多为 5 天。例如,在下面的结果中,我希望最后 3 个组显示为一条记录,dateRangeStart 为 10/6,dateRangeEnd 为 10/20:
如果休息时间只是周末,有什么方法可以设置它以忽略日期范围内的休息时间?
谢谢您的帮助。