SSRS条件求和

时间:2011-01-18 17:32:34

标签: reporting-services conditional sum

我有一个显示多页行的SSRS报告。每行中都有一个“TYPE”字段。在该TYPE字段中,值为“M”或值为“P”。在报告的最后,我想总结“P”类型的所有价格值。我尝试了这个,但它产生了一个#Error:

=Sum(iif(Fields!TYPE.Value = "P",Fields!EXT_QTY.Value * Fields!PRICE.Value ,0))

这总计所有行

=iif(Fields!PART_TYPE.Value = "P" ,  Sum(Fields!EXT_QTY.Value * Fields!PRICE.Value ),  0 )

我确信这是可行的。有任何想法吗?感谢

2 个答案:

答案 0 :(得分:33)

找到答案......

=SUM(IIF(Fields!PART_TYPE.Value ="P",CDbl(Fields!EXT_QTY.Value * Fields!PRICE.Value), CDbl(0.0)))

答案 1 :(得分:13)

由于类型比较,SUM失败 - 您不能对不同类型的值求和,作为表达式(可能是Double)0,Integer。 MikeTWebb的答案进行显式类型转换以解决此错误。这对于这个特定的例子来说很好,是一个Sum,但如果你想要Type为P的值的平均值(Sum / Count),这不会产生准确的结果。这是因为0是一个值并且当您确实希望从计算中排除这些值时,将包括在平均计算中。

另一种选择是使用Nothing而不是0:

=Sum(IIF(Fields!TYPE.Value = "P", Fields!EXT_QTY.Value * Fields!PRICE.Value, Nothing))

这解决了类型比较错误,无需显式类型转换,并且在使用聚合时更好的解决方案,其中值是否存在对结果有重要意义,如Average