我正在寻找一种更好的方法来处理此表达式:
=IIf(Sum(Fields!DestElectronic.Value) > 0, 1 - Count(Fields!counter.Value) / Sum(IIf(Fields!DestElectronic.Value = 1, 1, 0)), 0) *-1
我们这样说:
Count(Fields!counter.Value) = 325
那
=Sum(Fields!DestElectronic.Value) = 201
那应该是62%,我的问题是,如果我忽略* -1(乘以负数1),它将返回-62%。有道理。
如果我将方程翻转,则返回38%(这也是有道理的。)
对此我担心的是* -1只是挂在那儿,我担心它会产生无法预料的结果。
我的目标是回报62%。此值将与其他3个值相加,总计应始终为100。
那么这可以写得更好吗?
答案 0 :(得分:1)
您说Sum(Fields!DestElectronic.Value)
等于201,但是Sum(IIf(Fields!DestElectronic.Value = 1, 1, 0))
等于什么?
假设我也想等于201,那么1 - 325 / 201
等于1 - 1.61692
,这就是为什么你得到负数的原因。
在不知道数据集其余部分是什么样的情况下,您可以通过取出前导1 -
并将小数部分翻转为
Sum(IIf(Fields!DestElectronic.Value = 1, 1, 0)) / Count(Fields!counter.Value)
但是请确保使用数据集的其他值进行测试。或者,您可以
Count(Fields!counter.Value) / Sum(IIf(Fields!DestElectronic.Value = 1, 1, 0)) - 1
请注意,这两个表达式返回的答案略有不同:前者返回0.61846
,而后者返回0.616915
。因此,根据您要尝试完成的工作,这些方法之一可能不正确。后者为您提供了以前得到的答案的肯定版本,因此我认为这是您要寻找的。但是,如果不知道自己要完成什么,就不可能说。