【发布时间】:2018-02-24 09:43:32
【问题描述】:
我正在尝试创建一个表格,该表格根据某一行的开始和结束日期计算多个日历。我有一个看起来像这样的表:
关键开始日期结束日期
123.1 1-10-2009 24-12-2009
123.2 1-7-2010 9-2-2011
123.3 1-5-2011 30-10-2011
…………
对于每个键,我想要一个新行,开始日期 +1 个月直到结束日期。
目前我的查询仅在我的临时表包含一行时才有效,即:
DECLARE @StartDate DATE = (select Start_date from #dim2);
SET DATEFIRST 7;
SET DATEFORMAT ymd;
SET LANGUAGE US_ENGLISH;
DECLARE @CutoffDate DATE = (select End_date from #dim2);
CREATE TABLE #dim3
([verwachte_aflossing] DATE,-- PRIMARY KEY,
);
INSERT #dim3([verwachte_aflossing] )
SELECT d
FROM
(
SELECT d = DATEADD(month, rn-1, @StartDate)
FROM
(
SELECT TOP (DATEDIFF(month, @StartDate, @CutoffDate))
rn = ROW_NUMBER() OVER (ORDER BY s1.[object_id])
FROM sys.all_objects AS s1
CROSS JOIN sys.all_objects AS s2
ORDER BY s1.[object_id]
) AS x
) AS y
现在有人怎么处理这个问题吗?
【问题讨论】:
标签: sql sql-server tsql