SSRS中的表达未按预期工作

时间:2013-08-14 15:47:11

标签: sql-server reporting-services ssrs-2008 ssrs-expression

我有一个SSRS报告,我希望对一个字段的值求和,但前提是另一个字段的值等于1,因为我已经为报告输出了每行的行号。基本上,我试图总结不同的价值来得出总数。截图如下。我收到超过1项订单的错误。用于计算船舶成本(红色文本)的表达式如下

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

enter image description here

但是我得到了#Error。具有文本#Error的单元格应该是11.25美元。

2 个答案:

答案 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)

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

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