如何获取2019年至当前年度的动态财年SQL查询语句
生成2019年至当前财年的序列SQL查询
完整解决方案代码
-- 计算当前财年的起始年份 DECLARE @CurrentFYStartYear INT = CASE WHEN MONTH(GETDATE()) BETWEEN 4 AND 12 THEN YEAR(GETDATE()) ELSE YEAR(GETDATE()) - 1 END; -- 递归生成2019至当前财年的所有财年序列 WITH FYSequence AS ( SELECT 2019 AS FYStartYear UNION ALL SELECT FYStartYear + 1 FROM FYSequence WHERE FYStartYear < @CurrentFYStartYear ) SELECT CONVERT(VARCHAR(4), FYStartYear) + '-' + CONVERT(VARCHAR(4), FYStartYear + 1) AS F_YEAR FROM FYSequence ORDER BY F_YEAR;
逻辑说明
- 确定当前财年起始年:根据当前系统月份判断,4-12月的财年起始年为当年,1-3月则为上一年,确保财年判断符合动态规则。
- 生成年份序列:用递归CTE从2019开始,逐年递增直到当前财年起始年,得到连续的年份范围。
- 拼接财年格式:将每个起始年份与下一年拼接成
YYYY-YYYY的字符串格式,最终输出符合要求的财年列表。
原代码问题说明
你原来的查询只能返回单个当前财年,无法生成从2019年开始的连续财年序列。要实现批量生成,必须先构建年份范围的数据集,再进行格式拼接。
内容的提问来源于stack exchange,提问作者anilkumar
相关产品推荐
相关产品推荐

