技术请求:修改SQL查询以包含当前月份,使结果起始为2023P1
修改SQL查询以包含当前月份数据
原查询的问题在于月份偏移量的计算逻辑:ROW_NUMBER() OVER(ORDER BY object_id) * -1会从上个月开始生成日期(因为ROW_NUMBER从1开始,第一个偏移值是-1)。要让结果起始为当前月份,只需调整偏移量的计算方式:
修改后的SQL代码:
SELECT TOP (14) Entity = 'Total_Group' , Scenario = 'Actual' , Date = TRIM(CAST(YEAR(DATEADD(MONTH, (ROW_NUMBER() OVER(ORDER BY object_id) - 1) * -1, GETDATE())) as CHAR(4)) + ' P' + CAST(MONTH(DATEADD(MONTH, (ROW_NUMBER() OVER(ORDER BY object_id) - 1) * -1, GETDATE())) as VARCHAR(2))) FROM [sys].[all_objects]
关键修改说明
- 把原偏移量表达式
ROW_NUMBER() * -1改为(ROW_NUMBER() - 1) * -1:- 当
ROW_NUMBER()为1时,偏移量为0,对应当前月份,这就是结果的起始值; - 后续
ROW_NUMBER()递增时,偏移量依次为-1、-2...,对应过去的月份; - 配合
TOP (14),最终会返回当前月份加上过去13个月的日期数据,正好满足需求。
- 当
内容的提问来源于stack exchange,提问作者Greencolor
相关产品推荐
相关产品推荐

