在结果集中自动化长达 10 年

问题描述 投票:0回答:1

如果我要执行一个返回一行的简单选择语句,其中第一列是行号 - 在本例中是 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

等等。 。 .

t-sql
1个回答
0
投票

设法做到了这一点 -

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)

© www.soinside.com 2019 - 2024. All rights reserved.