SSRS Avg函数返回与预期不同的结果

时间:2013-07-22 14:09:09

标签: function reporting-services ssrs-2008 average iif-function

目前我正在尝试平均一组数字,但是在某些条件下。

是否可以在iif()中使用avg()并返回正确的结果?

此外,截至目前,我的计算返回一个返回功率的小数(8.9267 .... E -05)。

我尝试通过有条件地求和然后除以条件计数来绕过AVG函数,但它给出了相同的结果。

有人可以解释为什么退回并提供帮助吗?

目前我有:

=avg(iif((This_case) AND (That_case) AND (This_conditional)
  , Fields!ResponseRate.Value
  , 0))

基本上,如果满足某些条件,我想要平均值ResponseRate。

sum函数适用于条件但平均值不适用。

2 个答案:

答案 0 :(得分:6)

您绝对可以在IIf中使用Avg并获得正确的结果。

是否要完全排除计算中的False值?

在您的示例中,您仍然包含它们,只需将它们设置为0,因此仍将它们包含在计算中。这可能会解释您意想不到的结果。

如果您想完全排除它们,请使用Nothing代替0

在评论后修改

您可以在另一个 IIf语句中嵌套表达式,并使用IsNothing检查NULL值。

说出你的条件平均表达式是:

=Avg(IIf(Fields!ID.Value > 5, Fields!value.Value, Nothing))

您可以为NULL值返回0,例如:

=IIf(IsNothing(Avg(IIf(Fields!ID.Value > 5, Fields!value.Value, Nothing)))
    , 0.0
    , Avg(IIf(Fields!ID.Value > 5, Fields!value.Value, Nothing)))

答案 1 :(得分:0)

我想加上我的两分钱,有点晚了,但也很有价值。如果另一条记录出现X次,我可以使用上面的代码来平均数据集。

=AVG(IIF(Count(Fields!AcctNo.Value, "AcctNo1") = 2, Fields!Limit.Value, Nothing))

因此,如果acctno字段出现1次,请平均该行组的限制字段。伊恩的例子非常有帮助