Я пытаюсь сгруппировать непрерывные диапазоны дат, чтобы показать минимальную и максимальную дату для каждого диапазона. До сих пор я использовал решение, подобное этому: 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:
![screenshot of results](https://i.stack.imgur.com/PMlF9.jpg)
Есть ли способ, которым я могу настроить это, чтобы игнорировать перерыв в диапазоне дат, если этот перерыв - просто выходные?
Спасибо за помощь.