我正在报表生成器中为SSRS构建报表。我的数据看起来像:
我的柱形图按组织分组,系列组分类,6个类别中的每一个都适用于每个组织。
我想添加一个额外的系列,以显示每个组织的所有类别的总体平均值。
任何人都可以建议实现这一目标的方法吗?我是否需要在SSRS中使用新的计算字段,是否应该增强我的SQL查询以在那里完成计算?
我的SQL查询是:
select OrganizationUnitID,Category,AVG(NumericValue) as average
, case
when AVG(NumericValue) <= 1 then 0
when AVG(NumericValue) > 1 and AVG(NumericValue) <= 2 then 50
when AVG(NumericValue) > 2 and AVG(NumericValue) <= 3 then 75
when AVG(NumericValue) > 3 then 100 end
as percentage
from SurveyMetricView
group by OrganizationUnitID,Category
order by OrganizationUnitID
所需的结果是此图表:
提前感谢任何建议。
答案 0 :(得分:0)
这是您发布的requeriment的可能解决方案。
将文本框添加到表面,只需将其放在报表中的任何位置即可。
将以下表达式设置为文本框。
=Avg(Fields!percentage.Value, "DataSetName")
将以下表达式添加到系列中。请注意表达式中我引用Textbox49
,因为它是我之前添加到报表中的文本框的名称,它包含所有值的平均值。
=ReportItems!Textbox49.Value
更改已添加到Line Chart
的系列的图表类型。
它将预览:
您可以将文本框的Visibility属性设置为
hidden = true
如果您不希望它出现在您的报告中。
让我知道这是否有用
答案 1 :(得分:0)
感谢指点。
最后我做的是使用以下查询创建一个新数据集来计算每个组织的总体平均值,主要是选择不同的组织:
declare @st_date datetime;
declare @en_date datetime;
set @st_date = (@st_datein);
set @en_date = (@en_datein);
Select Distinct
SurveyMetricView.OrganizationUnitID,
Avg(SurveyMetricView.NumericValue) As average,
Case When Avg(SurveyMetricView.NumericValue) <= 1 Then 0
When Avg(SurveyMetricView.NumericValue) > 1 And
Avg(SurveyMetricView.NumericValue) <= 2 Then 50
When Avg(SurveyMetricView.NumericValue) > 2 And
Avg(SurveyMetricView.NumericValue) <= 3 Then 75
When Avg(SurveyMetricView.NumericValue) > 3 Then 100 End As percentage
From
SurveyMetricView
where
OrganizationUnitID in (@OrganizationUnit)
and ClosedDateTime >= @st_date
and ClosedDateTime <= @en_date
Group By
SurveyMetricView.OrganizationUnitID
Order By
SurveyMetricView.OrganizationUnitID