我有一个SSRS报告,我希望对一个字段的值求和,但前提是另一个字段的值等于1,因为我已经为报告输出了每行的行号。基本上,我试图总结不同的价值来得出总数。截图如下。我收到超过1项订单的错误。用于计算船舶成本(红色文本)的表达式如下
=SUM(IIF(Fields!RowNumber.Value = 1, Fields!WEIGHT.Value, 0))
但是我得到了#Error。具有文本#Error的单元格应该是11.25美元。
答案 0 :(得分:3)
我认为您可能会在聚合中获得数据类型不匹配的情况; SSRS无法处理这些IIf
/聚合表达式中的隐式转换。
在您的表达式中,0
将被视为 int ,并假设基础数据类型Fields!WEIGHT.Value
为十进制或 double ,这将引发运行时错误 - 如果您在BIDS中预览它应该实际显示错误。
要解决此问题,您需要确保两个IIf
结果具有相同的数据类型 - 例如:
=SUM(IIF(Fields!RowNumber.Value = 1, Fields!WEIGHT.Value, 0.0))
或
=SUM(IIF(Fields!RowNumber.Value = 1, Fields!WEIGHT.Value, CDec(0)))
或
=SUM(IIF(Fields!RowNumber.Value = 1, Fields!WEIGHT.Value, CDbl(0)))
根据底层数据类型,您可能需要尝试一些组合,但希望其中一个示例能够正常工作,
答案 1 :(得分:0)
如果您的论坛名为“订单#”,则表达式应为:
=SUM(IIF(Fields!RowNumber.Value = 1, Fields!Weight.Value, 0),"Order#")