SSRS报表添加@StartDate参数实现漏期手动补跑配置方法
SSRS报表补跑功能@StartDate参数配置方案
实现思路
原有自动日跑逻辑通过判断报表执行日是周几,自动回溯对应天数取立案数据:周一执行时回溯3天取上周五数据,其余日期执行时回溯1天取前一日数据。
新增手动补跑能力时,只需要把逻辑中原来取系统当前时间的GETDATE()替换为支持手动传入的@StartDate参数,同时给参数配置当前日期为默认值,就能同时兼容日常自动调度、手动补跑两个场景,不需要改动原有判断规则。
修改后可直接使用的SQL代码
SELECT * FROM Court WHERE case_filed_dt = CASE WHEN DATEPART(WEEKDAY, @StartDate) = 2 THEN DATEDIFF(DAY, 3, @StartDate) ELSE DATEDIFF(DAY, 1, @StartDate) END ORDER BY court ASC
SSRS报表端参数配置步骤
- 在报表参数面板新建日期类型参数,参数名设置为
@StartDate - 参数可见性设置为可见,允许业务用户手动选择/输入补跑的报表执行日期
- 参数默认值配置为表达式
=Today(),日常自动调度时不需要手动输入参数,和原有运行逻辑完全一致 - 数据集参数映射中,将SQL中的
@StartDate绑定到刚新建的报表参数即可
逻辑校验示例
- 传入
@StartDate = '2022-06-06'(周一,DATEPART(WEEKDAY, @StartDate)返回2):计算得到目标取数日期为2022-06-03,符合取上周五数据的规则 - 传入
@StartDate = '2022-06-07'(周二,DATEPART(WEEKDAY, @StartDate)返回3):计算得到目标取数日期为2022-06-06,符合取前一日数据的规则 - 不手动传参使用默认值时:自动取当前系统日期做判断,和原有日跑逻辑完全一致,不会影响现有定时任务的正常运行
注意:
DATEPART(WEEKDAY)的返回值受会话级DATEFIRST配置影响,当前逻辑适配SQL Server默认配置(周日为一周第1天,周一返回值为2),如果你的环境修改过周起始日设置,需要对应调整CASE语句后的判断阈值。
内容的提问来源于stack exchange,提问作者jr7138
相关产品推荐
相关产品推荐

