在SSRS 2008 R2中汇总组项目

mar*_*234 8 scope reporting-services

我认为这是一个相当简单的问题,但不能为我的生活找出如何做到这一点(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可能有1个与之关联的作业,而TrackNo T2可能有3个作业相关联.然后,我支付了各种工作的成本.如果每件货物的价格为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

报告中的发货总数为 First(Fields!ShipTotal.Value)

我想总结整个报告的ShipTotal(不是总计工作总数,因为它们有舍入错误:例如3.33*3 = 9.99)

如何将针对组1(First(Fields!ShipTotal.Value))显示的值相加?我在想范围是方法,但我迷路了.

Jam*_*e F 17

这个问题经常被问到旧版本的SSRS,所以很高兴回答一个支持你需要的功能的最新版本.SSRS 2008R2引入了对聚合聚合的支持.

在报告的总框中,将表达式设置为:

=SUM( MAX(Fields!ShipTotal.Value, "TrackNo"), "DataSetName")
Run Code Online (Sandbox Code Playgroud)

正如您所提到的,范围是其中的关键部分.上面的表达式表明SSRS应该为每个"TrackNo"组取第一个ShipTotal,并为数据集中的每个TrackNo组添加它们.(当然,在那里替换你的数据集名称.)

获得此结果的另外两种方法也适用于早期版本的SSRS:

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

  • 不,此功能随SSRS 2008R2一起添加.有几种方法可以在2005年实现这一点.最常见的一种方法是使用自定义代码来存储运行总计,并且每组只添加一次.像这样:http://devshed.us/Blogs/tabid/227/EntryId/552/SSRS-How-to-get-a-running-total.aspx (3认同)