如何在CTE中创建多行(作为日期列)? (凭空)

时间:2012-12-17 18:29:09

标签: sql sql-server sql-server-2008

我有一个存储过程,我想在表格中添加日期列。然后我想知道如何让MS-SQL使用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?

...谢谢

1 个答案:

答案 0 :(得分:3)

除非我遗漏了某些内容,否则您需要以下内容:

;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