【问题标题】:Calculation, excluding empty values计算,不包括空值
【发布时间】:2017-07-27 04:56:10
【问题描述】:

我在 SSRS 中的每个行组都运行以下计算:

=(count(Fields!RowNumber.Value)*sum(Fields!RowNumber.Value*Fields!Score.Value) - sum(Fields!RowNumber.Value)* sum(Fields!Score.Value))/(count(Fields!RowNumber.Value)*sum(Fields!RowNumber.Value*Fields!RowNumber.Value) - sum(Fields!RowNumber.Value)* sum(Fields!RowNumber.Value))

计算可以显示斜率结果。

问题在于行组中的某些 Fields!Score.Values 为空白,因此不应将其包含在计算中。 RowNumber 是一个字段,该字段为该行组中的每个分数数加 1。

我如何在此计算中考虑到这一点,以从计算中排除 Fields!Score.Value 中的空值?

举个例子:

How it seems to be working      How it should work:
1   0 (converting it to 0)      1   (not take into account this row)
2   0 (converting it to 0)      2   (not take into account this row)    
3   4                           3   4
4   4                           4   4
5   4                           5   4
6   4                           6   4

您可以在下面看到,上面的表达式将空白转换为 0,并以 0.914286 的错误结果结束,因为当它不考虑这些空白条目时,正确的结果是 0。下面还有一些其他的例子。

这是使用 Excel 中的 SLOPE 功能 (=SLOPE(F5:F10,E5:E10)),该功能在 SSRS 中使用上述表达式重新创建。 Excel 似乎足够聪明,可以忽略系列中的空白条目,我需要 SSRS 表达式中的相同功能。

【问题讨论】:

  • 在第 3-6 行提供一个或两个具有不同数字的 y 样本和预期结果会很好
  • 当然,完成@niktrs

标签: sql sql-server excel reporting-services


【解决方案1】:

您的表达式应如下所示

=(
SUM(Iif(Fields!num1.Value=0,0,1) )
* SUM(Fields!rownum.Value*Fields!num1.Value)
- 
SUM(Iif(Fields!num1.Value=0,0,Fields!rownum.Value)) 
* SUM(Fields!num1.Value)
) 
/ 
(
SUM(Iif(Fields!Score.Value=0,0,1) )
* 
SUM(Iif(Fields!Score.Value=0,0,Fields!RowNumber.Value*Fields!RowNumber.Value))
- 
SUM(Iif(Fields!Score.Value=0,0,Fields!RowNumber.Value))
*
SUM(Iif(Fields!Score.Value=0,0,Fields!RowNumber.Value))
)

【讨论】:

  • 谢谢你,但是 RowNumber 值也有 SUM 字段条目,我也相信斜率计算需要它,不是吗?您能否确认一下,您介意编辑一下表达式吗?
  • 你的计算有点复杂。请根据当前和预期的计算结果改进您的样本数据。
  • 谢谢。
猜你喜欢
  • 2021-03-16
  • 2023-03-21
  • 2017-11-30
  • 2021-11-22
  • 2016-10-02
  • 1970-01-01
  • 2021-09-07
  • 2018-03-04
  • 1970-01-01
相关资源
最近更新 更多