SSRS报表多筛选器WHERE子句逻辑实现求助
SSRS报表筛选WHERE子句解决方案
针对你遇到的参数为空时筛选逻辑失效的问题,直接用下面的TSQL逻辑就能实现需求:
WHERE -- 订单号筛选:参数非空时匹配对应订单,为空时不限制 (@OrderNumber IS NULL OR sh.CustomerOrderNbr = @OrderNumber) AND -- 日期筛选:参数非空时用起止范围,为空时默认取当日数据 ( (@StartDate IS NOT NULL AND @EndDate IS NOT NULL AND CONVERT(date, cr.CreateDt) BETWEEN @StartDate AND @EndDate) OR (@StartDate IS NULL AND @EndDate IS NULL AND CONVERT(date, cr.CreateDt) = CONVERT(date, GETDATE())) )
关键逻辑说明
- 订单号筛选:用
@OrderNumber IS NULL OR 匹配条件的结构,参数为空时该条件自动成立,不会过滤数据;参数有值时仅保留对应订单的记录。 - 日期筛选:分两种场景:
- 用户设置了起止日期参数,就按指定范围筛选;
- 未设置日期参数(参数为空),自动筛选当日数据。
SSRS参数配置配合
- 将
@StartDate和@EndDate的默认值设为=Today(),打开报表时默认加载当日数据; - 确保
@OrderNumber、@StartDate、@EndDate的「允许空值」选项已勾选,这样参数为空时SQL逻辑才能正常触发。
内容的提问来源于stack exchange,提问作者Murat ibrahimoglu
相关产品推荐
相关产品推荐

