SSRS条件求和

问题描述 投票:23回答:3

我有一个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 )

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

reporting-services conditional sum
3个回答
35
投票

找到答案。...

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

15
投票

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

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

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

这解决了类型比较错误,而无需显式的类型转换,当您使用聚合时,该值是否存在对结果至关重要,例如Average,这是一个更好的解决方案。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.