SSRS 2012中的动态分组

时间:2014-08-25 13:36:24

标签: sql sql-server reporting-services

我正在开发一个包含

参数的报告

RowGroupLevel1,
RowGroupLevel2,
ColumnGroupLevel1,
ColumnGroupLevel2,
ColumnGroupLevel3

行组包含类别,主管名称,客户端名称类似字段 列组包含年,季度,月份字段。
所以我的要求与行和列分组中的Level1除外,其他字段是可选的。
例如:如果我选择如下
方案1:
RowGroupLevel1 - 类别
RowGroupLevel2 - 执行名称
ColumnGroupLevel1 - 年份
ColumnGroupLevel2 - Quaker
ColumnGroupLevel3 - 月

方案2:
RowGroupLevel1 - 类别
RowGroupLevel2 -
ColumnGroupLevel1 - 年份
ColumnGroupLevel2 - 月
ColumnGroupLevel3 -

所以我可以动态地对报告进行分组。

请帮我创建任何类型的SSRS报告。


提前致谢。 Ankit Gusani

1 个答案:

答案 0 :(得分:0)

实现这一目标的最简单方法是首先编写您的查询,然后像这样提取结果。

SQL Server查询

SELECT  DATEPART(WEEK,  Date_Column) AS [Weekly]
       ,DATEPART(MONTH, Date_Column) AS [Monthly]
       ,DATEPART(YEAR, Date_Column)  AS [Yearly]
       ,SUM(Some_Column)             AS Total
FROM Table_Name
GROUP BY DATEPART(MONTH, Date_Column) 
        ,DATEPART(WEEK,  Date_Column)
        ,DATEPART(YEAR, Date_Column)

SSRS报告

添加Matrix数据区域。将Total列拖放到DATA

创建GROUP ON Text类型的参数,并提供值

1) Weekly
2) Monthly
3) Yearly

现在在ROW GROUPS窗格的下方,右键单击唯一可见的行组并转到GROUP PROPERTIESGROUP ON部分中放入以下表达式。

=SWITCH(
         Parameters!Groupby.Value = "Weekly",  Fields!Weekly.Value
        ,Parameters!Groupby.Value = "Monthly", Fields!Monthly.Value
        ,Parameters!Groupby.Value = "Yearly",  Fields!Yearly.Value
        )

在数据区域ROWS部分使用完全相同的表达式。

对于列名,您可以使用以下表达式...

=SWITCH(
         Parameters!Groupby.Value = "Weekly",  "Weekly"
        ,Parameters!Groupby.Value = "Monthly", "Monthly"
        ,Parameters!Groupby.Value = "Yearly",  "Yearly"
        )

你很高兴。

重要提示

SSRS是一种很酷的数据表示工具,在数据处理方面并不那么酷,为了获得更好的性能,可以更接近源(数据库,SQL Server)进行各种数据处理。

所有演示文稿都应在SSRS上处理。