计算SSRS的总和和平均值

时间:2013-04-04 16:53:49

标签: tsql reporting-services ssrs-2008

我的报告中存在问题。 我有一个像这样的矩阵


                     |ID   |         
 |Question(TEXT)|    |Point(Value)|   |Calculated(Average)|   |Calculated(Satisfaction)%|
                  Summary:            |Average(Average)   |   |Average(Satisfaction)%|

此矩阵位于另一个组中,该组是一个页面组。

所以,我的问题出在其中一个Page组中,

Question_Text为空白,并且所有点(值)都为0.

行中的平均值显示正确的值,但汇总平均值显示不正确,因为它还考虑了额外的行并计算平均值。

因此,如果所有平均值之和为40且有4个问题(包括空白问题) 平均值为10而不是13.33,因为它除以4而不是3。

由于查询而显示该行,因此我是否需要更改查询,或者我是否可以在SSRS中执行此操作。

1 个答案:

答案 0 :(得分:2)

您可以使用这样的表达式来排除空白问题:

=Avg(IIf(Fields!Question_Text.Value = "" or IsNothing(Fields!Question_Text.Value)
  , Nothing
  , Fields!Point_Value.Value))

或替代方案:

=Sum(Fields!Point_Value.Value)
  / Sum(IIf(Fields!Question_Text.Value = "" or IsNothing(Fields!Question_Text.Value), 0.0, 1.0))'Updated

评论后修改:

我将这些表达式添加到报告中 - 第一次正常工作,第二次在次要更新后也工作正常(请参阅编辑详情)。

我使用以下查询创建了一个测试数据集:

select Question_Group = 'Group1', Question_Text = 'Q1', Point_Value = 10
union all select Question_Group = 'Group1', Question_Text = 'Q2', Point_Value = 15
union all select Question_Group = 'Group1', Question_Text = 'Q3', Point_Value = 15
union all select Question_Group = 'Group1', Question_Text = '', Point_Value = 0
union all select Question_Group = 'Group2', Question_Text = 'Q4', Point_Value = 10
union all select Question_Group = 'Group2', Question_Text = 'Q5', Point_Value = 15
union all select Question_Group = 'Group2', Question_Text = 'Q6', Point_Value = 15
union all select Question_Group = 'Group2', Question_Text = null, Point_Value = 0

我刚刚创建了一个基于Question_Group的组,并将这两个表达式添加到组尾。

在设计模式下报告:

enter image description here

根据以上数据集报告结果:

enter image description here