2

目前我正在尝试平均一组数字,但有一定的条件。

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

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

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

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

目前我有:

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

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

sum功能适用​​于条件,但平均值不适用。

4

2 回答 2

6

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

您想False完全从计算中排除这些值吗?

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

如果您想完全排除它们,请使用Nothing而不是0.

评论后编辑

您可以将表达式嵌套在另一个 IIf语句中,并使用IsNothing.

假设您的条件平均表达式为:

=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)))
于 2013-07-22T15:15:05.983 回答
0

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

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

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

于 2014-09-12T17:55:15.537 回答