如果我要执行一个返回一行的简单选择语句,其中第一列是行号 - 在本例中是 1、开始日期和结束日期。 .
SELECT 1, GETDATE(), DATEADD(year,1,GETDATE()) 'EffectiveToDate'
所以这会给我 1, 2025-01-17 和一年后的 2026-01-16。
我想要实现的是另外 9 行 - 第 2 行到第 10 行,然后与第一行相同 - 但一年一次。
所以第 2 行将是 -
2, 2026-01-17 和 2027-01-16
等等。 。 .
设法做到了这一点 -
declare @startDate datetime,
@endDate datetime;
选择@startDate = getdate(),
@endDate = dateadd(年份,1,getdate()) -1
;与 myCTE 为
(
选择1作为ROWNO,@startDate“开始日期”,@EndDate“结束日期”
全部联合
选择 ROWNO+1 ,dateadd(YEAR, 1, StartDate) , dateadd(YEAR, 1, EndDate)
来自 myCTE
其中 ROWNO+1 <= 10
)
从 myCTE 选择 ROWNO,Convert(varchar(10),StartDate,105) 作为 StartDate ,Convert(varchar(10),EndDate,105)