SSRS条件求和

Mik*_*ebb 23 conditional sum reporting-services

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

=Sum(iif(Fields!TYPE.Value = "P",Fields!EXT_QTY.Value * Fields!PRICE.Value ,0))
Run Code Online (Sandbox Code Playgroud)

这总结了所有行

=iif(Fields!PART_TYPE.Value = "P" ,  Sum(Fields!EXT_QTY.Value * Fields!PRICE.Value ),  0 )
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*ebb 34

找到答案....

=SUM(IIF(Fields!PART_TYPE.Value ="P",CDbl(Fields!EXT_QTY.Value * Fields!PRICE.Value), CDbl(0.0)))
Run Code Online (Sandbox Code Playgroud)


Chr*_*tta 15

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

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

=Sum(IIF(Fields!TYPE.Value = "P", Fields!EXT_QTY.Value * Fields!PRICE.Value, Nothing))
Run Code Online (Sandbox Code Playgroud)

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