我有一個包含以下數據時段之間獲取日期
periodID periostart periodend
1 01-01-2012 10-01-2012
2 11-01-2012 01-04-2012
我想對於一個查詢返回這樣的一個表。 periodID日期
1 01-01-2012
1 02-01-2012
1 03-01-2012
etc.
1 09-01-2012
2 11-01-2012
2 12-01-2012
etc.
2 31-03-2012
因爲我有一個包含約時期100,000行,我想在這不會影響性能的解決方案工作(遊標循環)。是否有可能得到我想要的結果而不使用遊標或循環?
感謝您的參與。
我得到了這個解決方案到目前爲止
create table #p (id int, periodstart smalldatetime, periodend smalldatetime);
insert into #p values
(1, '2012-01-01', '2015-01-10')
insert into #p values
(2, '2012-04-10', '2015-11-20');
SELECT TOP 366 --aprox one year
IDENTITY(INT,0,1) AS N
INTO #Tally
FROM Master.dbo.SysColumns sc1,
Master.dbo.SysColumns sc2
SELECT DATEADD(day, T.N, periodstart) AS [Date]
FROM #p
cross join #tally T
WHERE (T.N >= 0 AND T.N < DATEDIFF(day, periodstart, periodend))
ORDER BY [Date]
事件探查器問題的性能,我會在解決問題後立即發佈結果。 – mko 2012-02-04 23:32:31
這基本上是從我提供的文章中提取的,但是既然您表現出了幫助的努力,我會將其標記爲解決方案。 – mko 2012-02-05 11:03:15