SSRS饼图数据显示错误:按ActualOnTime分组时同一订单重复统计如何解决

SSRS饼图订单去重统计解决方案
方案1:数据源预处理(最稳定,推荐优先使用)
在数据集查询阶段按订单维度聚合得到每个订单的整体发货状态,逻辑和你的表格统计规则对齐即可:
- 如果你的统计规则为「订单只要存在延迟发货的商品就算整体延迟」,可直接在SQL中新增订单级状态字段,示例代码:
SELECT 其他需要的字段, OrderID, CASE WHEN EXISTS (SELECT 1 FROM 订单明细表 t2 WHERE t2.OrderID = t1.OrderID AND t2.ActualOnTime = 0) THEN '延迟发货' ELSE '准时发货' END AS OrderOnTimeStatus FROM 订单表 t1
- 后续饼图直接按
OrderOnTimeStatus字段分组,统计值用COUNT(DISTINCT OrderID)即可完全对齐表格统计逻辑。
方案2:SSRS报表层处理(无需修改SQL的场景适用)
如果不方便修改数据源查询语句,可以直接在SSRS报表内新增计算字段实现逻辑:
- 打开对应数据集的属性面板,新增计算字段,字段名设为
OrderOnTimeStatus,表达式填写:
=IIF( Array.IndexOf(LookupSet(Fields!OrderID.Value, Fields!OrderID.Value, Fields!ActualOnTime.Value, "你的数据集名称"), False) > -1, "延迟发货", "准时发货" )
- 饼图的分组字段替换为新添加的
OrderOnTimeStatus,统计值设置为CountDistinct(Fields!OrderID.Value)即可。
如果你的统计规则是「准时发货商品占比超过指定阈值才算整体准时」,仅需要调整上述SQL或表达式中的判断条件即可,无需修改饼图的基础配置。
内容的提问来源于stack exchange,提问作者Jackm2810
相关产品推荐
相关产品推荐

