除非使用* -1,否则SSRS%计算返回为负

时间:2018-07-11 19:33:01

标签: reporting-services ssrs-2008 ssrs-2012

我正在寻找一种更好的方法来处理此表达式:

=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。

那么这可以写得更好吗?

1 个答案:

答案 0 :(得分:1)

您说Sum(Fields!DestElectronic.Value)等于201,但是Sum(IIf(Fields!DestElectronic.Value = 1, 1, 0))等于什么?

假设我也想等于201,那么1 - 325 / 201等于1 - 1.61692,这就是为什么你得到负数的原因。

在不知道数据集其余部分是什么样的情况下,您可以通过取出前导1 -并将小数部分翻转为

,以这些特定的给定值返回62%
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。因此,根据您要尝试完成的工作,这些方法之一可能不正确。后者为您提供了以前得到的答案的肯定版本,因此我认为这是您要寻找的。但是,如果不知道自己要完成什么,就不可能说。