Я пытаюсь сгруппировать смежные диапазоны дат, чтобы показать минимальную и максимальную дату для каждого диапазона. До сих пор я использовал решение, подобное этому: 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:
Есть ли способ настроить это, чтобы игнорировать перерыв в диапазоне дат, если этот перерыв - просто выходные?
Спасибо за помощь.