我有一个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 )
我确定这是可行的。有任何想法吗?谢谢
找到答案。...
=SUM(IIF(Fields!PART_TYPE.Value ="P",CDbl(Fields!EXT_QTY.Value * Fields!PRICE.Value), CDbl(0.0)))
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
,这是一个更好的解决方案。
“另一种选择是使用Nothing而不是0:” <