Reporting Services构建报表时quantity与ext price被乘3问题求助
问题根因
你遇到的数值为原值3倍的问题,核心是SQL多表关联后产生了重复行,同一条OrderDetail记录被匹配出3条结果,在SSRS中汇总时自然被计算3次。
排查建议
- 先单独运行你写的SQL语句,筛选你确认过的测试订单(加条件
WHERE Orders.OrderNumber = '对应测试订单编号'),查看返回的行数,如果结果为3行即可确认是JOIN导致的重复行问题。 - 逐一排查关联表的一对多关系,大概率是以下两类场景:
CustomerUserDefValues表:同一个CustomerID + SiteID组合存在3条符合UserDefID过滤条件的记录act.PartMapping表:同一个PartNo存在3条符合SalesRevenue过滤条件的记录
- 确认重复来源后,可选择两种方案修复:
- 对一对多的关联表先做去重再关联,示例修改如下:
-- 对PartMapping去重 INNER JOIN (SELECT DISTINCT PartNo, SalesRevenue FROM act.PartMapping) PartMapping ON OrderDetail.PartNo = PartMapping.PartNo -- 对CustomerUserDefValues去重 INNER JOIN (SELECT DISTINCT CustomerID, SiteID, UserDefValue, UserDefID FROM CustomerUserDefValues) CustomerUserDefValues ON Orders.CustomerID = CustomerUserDefValues.CustomerID AND Orders.SiteID = CustomerUserDefValues.SiteID- 如果业务需要保留多值字段,在SSRS汇总时使用去重逻辑,比如汇总Quantity的表达式写为:
其中=Sum(Fields!Quantity.Value, "OrderDetailGroup")OrderDetailGroup为你表格中以OrderDetail主键为分组依据的行组名称。 - 若SQL查询无重复行,检查SSRS报表的行组设置,确认没有重复的分组维度导致同一行明细被多次渲染计算。

内容的提问来源于stack exchange,提问作者Dane Thomas
相关产品推荐
相关产品推荐

