我試圖將連續日期範圍分組以顯示每個範圍的最小和最大日期。到目前爲止,我已經使用了一個類似於這個的解決方案:http://www.sqlservercentral.com/articles/T-SQL/71550/但是我在SQL 2000上,所以我不得不做一些改變。這是我的程序到目前爲止:按連續日期分組,忽略SQL中的週末
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組顯示爲一個單一的記錄,用10/6一dateRangeStart和10/20一dateRangeEnd:
有一些我可以設置這種方式來忽略日期範圍內的休息,如果這個休息只是一個週末?
感謝您的幫助。
爲什麼不創建一個永久的帶有星期編號列的日曆表? –
@Martin你能詳細解釋一下嗎?我總是可以使用datepart獲得星期編號,但我不明白這將如何幫助改變我的分組。 – Colin
哦,對了,我讀錯了問題。 –