4

我有一个 SSRS 报告,我想对一个字段的值求和,但前提是另一个字段的值等于 1,因为我已使报告为每一行输出一个行号。基本上,我试图将不同的值相加得出一个总数。截图如下。对于超过 1 件商品的订单,我收到错误消息。我用来计算 Ship Cost 的表达式(红色文本)如下

=SUM(IIF(Fields!RowNumber.Value = 1, Fields!WEIGHT.Value, 0))

在此处输入图像描述

但我得到了#Error。包含文本#Error 的单元格的读数应为 $11.25。

4

2 回答 2

3

我认为您可能会在聚合中得到数据类型不匹配;SSRS 无法处理此类IIf/aggregate 表达式中的隐式转换。

在您的表达式中,0将被视为int,并假设底层数据类型Fields!WEIGHT.Valuedecimaldouble,这将引发运行时错误 - 如果您在 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)))

根据基础数据类型,您可能必须尝试一些组合,但希望其中一个示例能够正常工作,

于 2013-08-14T16:37:22.193 回答
0

见这里: http: //www.bidn.com/forums/microsoft-business-intelligence/reporting-services/589/how-to-sum-at-group-level

如果您的组名为“Order#”,则您的表达式应为:
=SUM(IIF(Fields!RowNumber.Value = 1, Fields!Weight.Value, 0),"Order#")

于 2013-08-14T16:21:56.303 回答