SSRS 月份参数默认值设置为上月的实现方法咨询
问题解答
结论
完全可以直接在参数的默认值配置处通过表达式实现该需求,不需要修改你现有的生成月份可选值的SQL逻辑。
实现方式
以常用的SSRS(SQL Server Reporting Services)报表工具为例,直接在参数默认值的表达式配置栏输入如下内容即可:=Format(DateAdd("m", -1, Today()), "yyyyMM")
逻辑说明
- 先通过
DateAdd("m", -1, Today())获取当前日期往前推一个月的日期,自动适配跨年场景:比如1月打开报表时会自动返回上一年12月的对应值,不需要额外做边界处理 - 再通过
Format函数将日期格式化为四位年份加两位月份的字符串,和你现有SQL输出的Monat字段格式完全匹配,不会出现参数校验不通过的问题
可选方案:调整SQL逻辑统一控制
如果你希望把默认值逻辑和参数可选值逻辑都放在SQL层维护,也可以修改现有查询,新增默认值标记字段,后续参数默认值直接取标记为1的记录即可,修改后的SQL如下:
WITH Kalender AS (SELECT DateAdd(m,-4,DateAdd(d,1-DAY(DateAdd(d,-1,Convert(date,GETDATE()))),DateAdd(d,-1,Convert(date,GETDATE())))) AS [Datum] UNION ALL SELECT DATEADD(m, 1, [Datum]) FROM Kalender WHERE DATEADD(m, 1, [Datum] ) <= DateAdd(d,-1,Convert(date,GETDATE())) ) SELECT Monat = convert(varchar(4),YEAR([Datum])) + RIGHT('00' + convert(varchar(2),MONTH([Datum])),2), IsDefault = CASE WHEN [Datum] = DATEADD(m,-1,DATEADD(d,1-DAY(GETDATE()),GETDATE())) THEN 1 ELSE 0 END FROM Kalender ORDER BY Monat DESC
内容的提问来源于stack exchange,提问作者NewbieSQL_Germany
相关产品推荐
相关产品推荐

