2012-12-17 58 views
0

我有一個存儲過程,我想添加日期列到表中。然後我想知道如何讓MS-SQL使用CTE快速生成多行。說我有這個..如何在CTE中創建多行(如日期列)? (憑空)

 
(GETDATE() - 548) --(365 days --> 12 months, 548 days --> 18 months... 

你們如何掀起,將創建548行,並有日期列排

 
#1 - '12/17/2012' 
#2 - '12/16/2012' 
#3 - '12/15/2012' 

等所有列#548的方式查詢?所有這些都變成了CTE?

謝謝...

回答

2

除非我失去了一些東西,這聽起來像你想以下幾點:

;with dates(value) as 
(
    select DATEADD(d, -548, cast(getdate() as DATE)) 
    union all 
    select DATEADD(D, 1, value) 
    from dates 
    where DATEADD(D, 1, value) <= cast(getdate() as DATE) 
) 
select * 
from dates 
order by value desc 
OPTION (MAXRECURSION 1000) 

SQL Fiddle with Demo

+0

很不錯的!非常感謝!! – fletchsod