1

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

假设一些记录是:

John Smith,ABC 公司,项目 X,活动 X,10
John Smith,公司 ABC,项目 X,活动 Y,5
John Smith,公司 ABC,项目 Y,活动 X,8
John Smith,公司 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

等等...

报告用户可以选择按人员分组,其次按项目分组,他们会得到:

约翰·史密斯
                          项目 X 15
                          项目 Y 14

简·琼斯
                          项目 X 10
                          项目 Y 14

或者他们可以按项目然后按活动选择,或者他们喜欢的任何字段组合。我通过将一个表嵌套在另一个表中并在两者上进行分组来完成此操作,并且它工作得很好。

除了...它不会导出到 Excel。我们在 2005 年,据我所知,它在 2008 年仍然无法正常工作。之后不确定。无论如何,在我需要发布此报告时,我们无法升级。

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

我认为子报表理论上可以工作,只是整个事情都是子报表,我不知道您是否可以将它们分层。另外我怀疑开销会很糟糕......

谢谢!

4

2 回答 2

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
于 2012-05-03T08:35:55.217 回答
0

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

例如 Group By 1 参数

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

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

=Fields(Parameters!GroupBy1.Value).Value

第二组的组表达式为:

=Fields(Parameters!GroupBy2.Value).Value
于 2012-05-04T02:29:24.807 回答