在SSRS中进行双重分组+导出

时间:2012-05-03 03:37:10

标签: reporting-services ssrs-grouping

我正在尝试创建一个报告,允许用户不仅选择要分组的字段,还要选择第二级分组。为了演示 - 被查询的记录是人们的时间表条目。因此,每个记录都有诸如工作人员(工作时间的工作人员),公司(工作时间的公司),项目(项目工作),活动(完成的工作类型),当然还有工作时间等字段工作。还有更多的字段,但这对于这个例子来说已经足够了。

让我们说一些记录是:

John Smith,ABC公司,X项目,活动X,10 约翰史密斯,公司ABC,项目X,活动Y,5
约翰史密斯,公司ABC,项目Y,活动X,8
约翰史密斯,公司FGH,项目Y,活动Y,6
Jane Jones,ABC公司,X项目,活动X,4 Jane Jones,公司ABC,项目Y,活动Y,8
Jane Jones,公司FGH,项目Y,活动X,7
Jane Jones,公司FGH,项目X,活动Y,6

依旧......

报告用户可以选择按工作人员进行分组,其次是按项目进行分组,他们会得到这个:

John Smith
                          Project X                15
                          Project Y                14

Jane Jones
                          Project X                10
                          Project Y                14

或者他们可以选择Project,然后选择Activity,或者他们喜欢的任何字段组合。我通过在另一个表中嵌套一个表,并在两个表上放置分组来完成此操作,并且它可以很好地工作。

除了......它不会导出到Excel。我们在2005年,从我所看到的它在2008年仍然无效。之后不确定。无论如何,在我需要发布此报告时,我们无法进行升级。

我还能怎样做到这一点?我试图想出一些方法来在查询中进行第一级分组,但即使使用动态SQL我也无法想出如何使它适用于参数传入的任何字段,因为它需要能够返回第一级分组的其他字段。

我认为子报表在理论上是可行的,除了整个事件都是子报表,我不知道你是否可以对它们进行分层。另外我怀疑开销会很糟糕......

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试在动态SQL查询中执行所有分组 - 类似于:

="select " + 
 Parameters!ReportParameter1.Value + " firstCol, " +
 Parameters!ReportParameter2.Value + " secondCol, " +
 "sum(hours_worked) total_hours from timesheets " +
 "group by " + 
 Parameters!ReportParameter1.Value + ", " +
 Parameters!ReportParameter2.Value

答案 1 :(得分:0)

您不需要使用嵌套表来实现此目的。您只需要一个包含两个组和两个参数“Group By 1”和“Group By 2”的表,其中参数是数据集中列的名称。

e.g。分组1参数

value         label
------        -------
staff         Staff Member
project_name  Project

然后,将第一个组的组表达式设置为:

=Fields(Parameters!GroupBy1.Value).Value

和第二组的组表达式:

=Fields(Parameters!GroupBy2.Value).Value