我在SQL server中有一个表
我想在StartDate和EndDate之间生成每个演示日。通常,我必须创建一个脚本,声明一个游标并循环遍历游标以创建每个单独的日期。但是使用游标会大大减慢速度。
我想知道是否有人有更好的想法使用加入
我成功地根据startdate和enddate生成日期
SELECT d."CalendarDay" AS "PresenttionDate",
DATEPART(dw,d."CalendarDay") AS "PresentationDay"
FROM
(
SELECT StartDate-1+number AS "CalendarDay"
FROM master..spt_values
where type='P' and number<= DateDiff(day,StartDate,EndDate)
)d
我只是不知道如何将StartDate和EndDate绑定到演示文稿表。
基本上,我正在寻找下面的最终结果:
不涉及光标。那可能吗?
请告知。
答案 0 :(得分:2)
我认为这已足够:
with n as (
select row_number() over (order by (select null)) - 1 as n
from master..spt_values
)
select t.*, dateadd(day, n.n, t.startDate) as thedate
from t join
n
on dateadd(day, n.n, t.startDate) <= t.endDate;