目前我正在尝试平均一组数字,但是在某些条件下。
是否可以在iif()
中使用avg()
并返回正确的结果?
此外,截至目前,我的计算返回一个返回功率的小数(8.9267 .... E -05)。
我尝试通过有条件地求和然后除以条件计数来绕过AVG
函数,但它给出了相同的结果。
有人可以解释为什么退回并提供帮助吗?
目前我有:
=avg(iif((This_case) AND (That_case) AND (This_conditional)
, Fields!ResponseRate.Value
, 0))
基本上,如果满足某些条件,我想要平均值ResponseRate。
sum
函数适用于条件但平均值不适用。
答案 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次,请平均该行组的限制字段。伊恩的例子非常有帮助