SSRS报表下拉选所有仓库无数据,需创建SQL Case语句处理
解决SSRS报表「所有仓库」参数无数据的问题
你的问题出在WHERE子句里的C.Warehouse = @Warehouse条件——当选择「所有仓库」时,这个条件会强制要求仓库字段等于「所有仓库」这个字符串,而实际数据里没有这个仓库值,所以查不到数据。
不需要用CASE语句,直接用逻辑判断就能实现需求,修改后的查询语句如下:
SELECT C.FDWLotNo, C.ShipperCode, C.Warehouse, Sum(T.TonsQty) AS Total FROM dbo.tblInventoryTransactions2 T INNER JOIN dbo.tblCustomerInventory C ON T.CustInvID = C.CustInvID WHERE C.FINISHED='False' AND C.CustID = @Shipper AND (C.Warehouse = @Warehouse OR @Warehouse = '所有仓库') -- 修改这里 GROUP BY C.ShipperCode, C.FDWLotNo, C.Warehouse ORDER BY C.ShipperCode
逻辑说明:
- 当选择具体仓库时,
@Warehouse是对应仓库值,C.Warehouse = @Warehouse生效,只返回该仓库的数据 - 当选择所有仓库时,
@Warehouse = '所有仓库'为真,整个OR条件成立,会跳过仓库匹配的限制,返回该托运人下所有仓库的数据
如果你的「所有仓库」参数值不是字符串'所有仓库'(比如用空值NULL),把条件改成AND (@Warehouse IS NULL OR C.Warehouse = @Warehouse)就行。
内容的提问来源于stack exchange,提问作者Boltz
相关产品推荐
相关产品推荐

