SSRS实现@StartDate/@EndDate空值时正常返回数据方法
SSRS报表日期参数留空无返回值问题修复
问题现状
- 报表共配置3个参数:
@AISNoParam、@StartDate、@EndDate,已提前设置日期参数允许留空 - 原有查询逻辑受WHERE子句中AND连接的日期区间判断限制,当
@StartDate、@EndDate留空时查询返回空结果,即使开启参数允许Null值配置也无法解决 - 原有SQL查询语句如下:
Select * FROM tblAccessLog WHERE --For SSRS by AIS Number (AISNo = @AISNoParam) AND ([ViewedDT] >= @StartDate AND [ViewedDT] <= @EndDate) ORDER BY AISNo asc, [ViewedDT] ASC
- 当前SSRS报表参数配置界面如下:

- 目标需求:两个日期参数留空时,可正常返回匹配
@AISNoParam条件的所有数据。
修复方案
核心调整思路:修改日期区间的判断逻辑,当日期参数为NULL(留空状态)时跳过对应日期边界的过滤校验,仅当参数传入有效日期值时才执行范围匹配。
修改后的可直接使用的SQL语句:
SELECT * FROM tblAccessLog WHERE -- 按AIS编号匹配过滤 AISNo = @AISNoParam AND -- 开始日期过滤:参数为空时不限制起始边界 ([ViewedDT] >= @StartDate OR @StartDate IS NULL) AND -- 结束日期过滤:参数为空时不限制截止边界 ([ViewedDT] <= @EndDate OR @EndDate IS NULL) ORDER BY AISNo ASC, [ViewedDT] ASC
配置校验提示
- 确认SSRS参数设置中,
@StartDate、@EndDate的「允许Null值」「允许空值」选项已勾选,留空时参数传入值为NULL即可正常触发无限制逻辑 - 上述写法同时兼容单日期参数查询场景:仅填开始日期时返回该日期之后的所有匹配数据,仅填结束日期时返回该日期之前的所有匹配数据,无需额外修改逻辑。
内容的提问来源于stack exchange,提问作者jr7138
相关产品推荐
相关产品推荐

