reporting-services - SSRS % 计算返回为负数,除非使用 *-1
问题描述
我正在寻找一种更好的方法来处理这个表达式:
=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。
那么这个可以写得更好吗?
解决方案
你说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
。因此,根据您要完成的具体工作,其中一种方法可能不正确。后者为您提供了您之前得到的答案的正面版本,所以我认为这就是您正在寻找的。但是,如果不知道您要完成什么,就不可能说出来。
推荐阅读
- swift - 垂直和水平滚动collectionView选择单元格问题
- r - 为“TRUE”创建给定位置的逻辑向量
- python-3.x - CNN - 如何使用 keras 正确获取 val_loss 和 val_acc?
- mvvm - 如何使用 MVVM 为社区工具包 RadialGauge 制作动画?
- google-apps-script - 从 Google 表格发送提醒电子邮件和日历
- amazon-web-services - 更新 AWS Glue 表中的行/列
- bash - 如何使用 sed 或 grep 和正则表达式 json 提取文本
- javascript - Vue-ChartJS 数据集推送不更新图表
- java - MongoDB & Java:检索按索引排序的记录
- c++17 - 我需要一些帮助才能在 C++17 中获得正确的十进制输出流格式