我正在尝试创建一个报告,允许用户不仅选择要分组的字段,还要选择第二级分组。为了演示 - 被查询的记录是人们的时间表条目。因此,每个记录都有诸如工作人员(工作时间的工作人员),公司(工作时间的公司),项目(项目工作),活动(完成的工作类型),当然还有工作时间等字段工作。还有更多的字段,但这对于这个例子来说已经足够了。
让我们说一些记录是:
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我也无法想出如何使它适用于参数传入的任何字段,因为它需要能够返回第一级分组的其他字段。
我认为子报表在理论上是可行的,除了整个事件都是子报表,我不知道你是否可以对它们进行分层。另外我怀疑开销会很糟糕......
谢谢!
答案 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