在SSRS 2008 R2中对组项求和

8
我有一个看起来相当简单的问题,但是我无论如何都无法解决它(SSRS 2008 R2)。我正在使用一个tablix,因为我需要显示详细数据(而不仅仅是聚合数据)。
我有一行数据(运输成本)和作业成本分配。
报告中的(省略的)数据如下:
TrackNo ShipCost NoJobs JobNo Job Cost T1 10.00 1 J1 10.00 T2 10.00 3 J2 3.33 T2 10.00 3 J3 3.33 T2 10.00 3 J4 3.33
因此,TrackNo T1可能与其关联一个作业,而TrackNo T2可能与三个作业相关联。然后,我会按比例分配成本到各个作业上。如果每次运输成本为$10:
- 对于跟踪号T1,作业编号J1将得到$10.00。 - 对于跟踪号T2,作业J2、J3和J4将分别得到$3.33。
我想要一个像这样的钻取报告:
TrackNo Ship Total No. Jobs Job No Job Total + T1 10.00 1 J1 10.00 + T2 10.00 2 J2 3.33 J3 3.33 J4 3.33
在我的报告中,第1组是跟踪号;第2组(子组)是作业编号。
TrackNo JobNo
报告中的Ship Total是First(Fields!ShipTotal.Value) 我想对整个报告的ShipTotal求和(而不是对作业总数求和,因为这些会有舍入误差:例如3.33 * 3 = 9.99)
如何对第1组中显示的值(First(Fields!ShipTotal.Value))进行求和?我想到了Scope,但是我迷失了。
1个回答

17
往往人们会询问旧版SSRS的此类问题,因此回答最好是针对最近版本并支持所需功能的版本。 SSRS 2008R2引入了对聚合的支持。
在报表的总框中,将表达式设置为:
=SUM( MAX(Fields!ShipTotal.Value, "TrackNo"), "DataSetName")

如你所提到的,范围是其中的关键部分。上面的表达式表示SSRS应该为数据集中每个“TrackNo”组获取第一个ShipTotal,并将其添加到每个TrackNo组的总和中。 (当然要用你的数据集名称替换这里的内容。)

还有两种在早期版本的SSRS中也能获得此结果的方法:

  • 使用嵌入式代码追踪聚合
  • 在查询中执行数学计算,将结果作为不同数据集返回,或作为每一行的新字段返回。

这个在SSRS 2005中可行吗?当我尝试时,出现了“聚合函数不能嵌套在其他聚合函数内”的错误。 - FistOfFury
3
不,这个功能是在SSRS 2008R2中添加的。在2005中有几种实现方式。其中最常见的一种是使用自定义代码来存储运行总数,并且每组只增加一次。类似这样:http://devshed.us/Blogs/tabid/227/EntryId/552/SSRS-How-to-get-a-running-total.aspx - Jamie F
1
如果像我一样需要在组页脚中求和,您不需要指定数据集:=Sum(Max(Fields!ShipTotal.Value, "TrackNo"))就足够了。 - Johann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接