我有一个 SSRS 报告,我想对一个字段的值求和,但前提是另一个字段的值等于 1,因为我已使报告为每一行输出一个行号。基本上,我试图将不同的值相加得出一个总数。截图如下。对于超过 1 件商品的订单,我收到错误消息。我用来计算 Ship Cost 的表达式(红色文本)如下
=SUM(IIF(Fields!RowNumber.Value = 1, Fields!WEIGHT.Value, 0))
但我得到了#Error。包含文本#Error 的单元格的读数应为 $11.25。
我有一个 SSRS 报告,我想对一个字段的值求和,但前提是另一个字段的值等于 1,因为我已使报告为每一行输出一个行号。基本上,我试图将不同的值相加得出一个总数。截图如下。对于超过 1 件商品的订单,我收到错误消息。我用来计算 Ship Cost 的表达式(红色文本)如下
=SUM(IIF(Fields!RowNumber.Value = 1, Fields!WEIGHT.Value, 0))
但我得到了#Error。包含文本#Error 的单元格的读数应为 $11.25。
我认为您可能会在聚合中得到数据类型不匹配;SSRS 无法处理此类IIf
/aggregate 表达式中的隐式转换。
在您的表达式中,0
将被视为int,并假设底层数据类型Fields!WEIGHT.Value
为decimal或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)))
根据基础数据类型,您可能必须尝试一些组合,但希望其中一个示例能够正常工作,
如果您的组名为“Order#”,则您的表达式应为:
=SUM(IIF(Fields!RowNumber.Value = 1, Fields!Weight.Value, 0),"Order#")