我正在使用SSRS 2014.我的最终目标是获得如下所示的表格:
Project Status # of Projects Oldest Project Avg Project Age
Status 1 27 82 16
Status 2 9 29 6
Status 3 13 112 25
Status 4 33 68 16
Status 5 1 63 63
Status 6 1 27 27
Grand Total 84 112 17
这样的表格,包括总计,可以使用数据透视表在Excel中完成(这是最初检索数据的方式......手动...)
如果我的列包含projectStatus
和projectAge
的表中有相同的源数据,我可以生成一个查询来获取除SQL中的总计之外的所有数据:
SELECT projectStatus, COUNT(projectStatus), MAX(projectAge), AVG(projectAge)
FROM projects
GROUP BY projectStatus
如果我想要为此添加总计,我可以使用以下查询执行UNION
:
SELECT 'Grand Total', COUNT(projectStatus), MAX(projectAge), AVG(projectAge)
FROM projects
请注意,总计是根据整个数据集计算的,而不仅仅是分组数据 - 这主要适用于平均值,因为它恰好适用于COUNT
和MAX
列
现在,如果我尝试在SSRS中生成上面的表,使用以前的查询很容易生成上表 sans grand totals 。但是,现在如何添加总计?
我可以尝试一种不同的方法,我使用更通用的数据集查询,如:
SELECT projectStatus AS statusCategory, projectAge AS daysInCurrentStatus FROM projects
然后在我的表中使用聚合函数并让SSRS自己进行聚合并提供原始数据的总计。我现在遇到了一个新问题。设置表格的正确方法是什么?我正在将[statusCategory]分组为“Group1”,使用范围如下的聚合函数:
它正确地生成了总计,但现在我遇到了一个新问题:它显示每行的平均 而不是每个组/范围只有一个单元格。 这是SSRS的意图,如果是这样,我该怎么做?
...
答案 0 :(得分:1)
您需要稍微弄清楚才能获得正确的布局,但您基本上需要一个组页眉或页脚来显示组聚合。
如果右键单击[statusCategory]旁边的行并选择Insert Row > Outside Group - Above
,它将为您创建一个组头。然后只需将您的聚合表达式添加到正确的列中,例如=Count(Fields!projectStatus.Value)
,然后您就可以在详细信息行上设置Row Visibilty以隐藏,如果您不想看到它。
你最终应该采用类似的布局。
中间行(明细)可见性设置为false
答案 1 :(得分:0)
你走在正确的轨道上。您现在有两个行组。您需要做的就是删除内部的一个,因为它没有被任何东西分组。换句话说,它是针对每一行原始数据重复的。
所以Row Group命名为#34;详细信息" - 删除它或在属性中单击"添加"并将其分组1.这将折叠这些行并按照您的期望行事。