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

SSRS % calculation returning as negative unless *-1 used

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

=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),它将 return 为 -62%。有道理。

如果我翻转等式,那么它 return 是 38%(这也有道理。)

我担心的是 *-1 只是在那里闲逛,我担心它会产生无法预料的结果。

我的目标是 return 62%。此值将与其他 3 个总和应始终为 100 的值相加。

所以这个可以写得更好吗?

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

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

在不知道你的数据集的其余部分是什么样子的情况下,你可以通过取出前导 1 - 并将分数翻转到 return 62% 使用这些特定的给定值=19=]

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

注意这两个表达式return略有不同的答案:前者returns 0.61846而后者returns 0.616915。因此,根据您要完成的具体目标,其中一种方法可能不正确。后者为您提供了您之前获得的答案的肯定版本,因此我认为这就是您正在寻找的答案。但是,如果不知道您要完成什么,就不可能说出来。