计算,不包括空值

时间:2017-07-27 04:56:10

标签: sql sql-server excel reporting-services

我对SSRS中的每个Row Group运行以下计算:

=(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是一个字段,对该行组中的每个Scores数加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表达式中使用相同的功能。

enter image description here

1 个答案:

答案 0 :(得分: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))
)