如何生成包含10个逐年递增周期的SQL结果集?
生成递增年份的10行日期数据解决方案
你可以通过构造连续数字序列来批量生成这10行数据,以下是两种适用于SQL Server的实现方式:
方法1:递归CTE
递归CTE能便捷生成连续行号及对应递增日期:
WITH YearlyRows AS ( -- 初始化行号1的基础数据 SELECT 1 AS RowNumber, GETDATE() AS EffectiveFromDate, DATEADD(year, 1, GETDATE()) AS EffectiveToDate UNION ALL -- 递归生成行号2-10的递增数据 SELECT RowNumber + 1, DATEADD(year, 1, EffectiveFromDate), DATEADD(year, 1, EffectiveToDate) FROM YearlyRows WHERE RowNumber < 10 ) SELECT * FROM YearlyRows;
方法2:直接构造数字序列
通过VALUES生成1-10的数字列表,再计算对应日期:
SELECT n AS RowNumber, DATEADD(year, n-1, GETDATE()) AS EffectiveFromDate, DATEADD(year, n, GETDATE()) AS EffectiveToDate FROM ( VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10) ) AS Numbers(n);
两种方法都会返回行号1到10的结果,每行的起始日期和结束日期依次递增1年,完全匹配需求。
内容的提问来源于stack exchange,提问作者ikilledbill
相关产品推荐
相关产品推荐

