SSRS组,详细的聚合组

时间:2016-04-07 16:30:25

标签: reporting-services

在SSRS中,我尝试创建一个组结构,如下例所示(为简单起见,这里只有5天这里)。棘手的问题是最后一栏“销售(每月)”:它应该是一个行组,按月分组,更详细的列“Day”和“Sales(daily)”之后。将此列作为“月”和“日”列之间的第二列是没有问题的。

但是在使用“Day”和“Sales(daily)”处于“详细程度”之后,我无法创建另一个更加聚合的组。如果我只是为第4列设置Group Properties,Group On to Month,那么“Day”和“Sales(daily)”也会出现汇总,每月只有1行。

有人知道如何解决这个问题吗?或者这在SSRS中是不可能的?

Month  Day   Sales(daily)  Sales(monthly)
Feb    1     100           615
       2     150
       3     130    
       4     125    
       5     110    
March  1     100           685
       2     150    
       3     200    
       4     125    
       5     110    
April  1     100           560
       2     150    
       3     75 
       4     125    
       5     110    

非常感谢 麦克

1 个答案:

答案 0 :(得分:1)

在SSRS中没有本地方法可以做到这一点。

您需要使用 LookupSet 来获取当月的每日销售额,然后使用自定义函数( SumLookup )来获取总数。

然后你需要使用IIF,这样你才能在第1天显示它。

=IIF(Fields!DAY.VALUE <> 1, NOTHING, 
Code.SumLookup(LookupSet(Fields!MONTH.Value, Fields!MONTH.Value, Fields!SALES.Value, "Dataset1")))

功能代码:

Function SumLookup(ByVal items As Object()) As Decimal

If items Is Nothing Then Return Nothing

Dim suma As Decimal = New Decimal()
Dim ct as Integer = New Integer()

suma = 0
ct = 0

For Each item As Object In items

  suma += Convert.ToDecimal(item)
  ct += 1

Next

If (ct = 0) Then return 0 else return suma 

End Function 

SSRS

  

使用LookupSet从指定的数据集检索一组值的   对于具有1对多关系的名称 - 值对。对于   例如,对于表中的客户标识符,您可以使用LookupSet   从a检索该客户的所有关联电话号码   未绑定到数据区域的数据集。