我有来自MDX查询的以下数据表,类似于以下内容:
Account | Location | Type | Person | Amount
ABC | XYZ | AA | Tom | 10
ABC | XYZ | AA | Dick | 20
ABC | XYZ | AA | Harry | 30
ABC | XYZ | BB | Jane | 50
ABC | XYZ | BB | Ash | 100
DEF | SDQ | ZA | Bob | 20
DEF | SDQ | ZA | Kate | 10
DEF | LAO | PA | Olivia | 200
DEF | LAO | PA | Hugh | 120
我需要为每个帐户,位置和类型添加金额列。如果我使用SQL,我会按如下方式对此数据执行查询:
Select Account, Location, Type, Sum(Amount) as SumAmmount
From Table
Group By Account, Location, Type
但是由于我们存储数据的方式,我需要使用SSRS汇总这些数据。为此,我创建了一个tablix,创建了一个默认详细信息组的父组(我称之为“RollUp”),该组在Account,Location和Type上分组,然后删除了详细信息组,因此在运行报告时我得到:< / p>
Account | Location | Type | Amount
ABC | XYZ | AA | 60
ABC | XYZ | BB | 150
DEF | SDQ | ZA | 30
DEF | LAO | PA | 320
我现在需要做的是创建一个分页符,这样当我将这个SSRS报告导出到excel时,每张表上只有1000行,但是我在编写表达式时遇到的问题是每1000行拆分一次。因为我删除了详细信息组,所以我无法使用我用于在数据集的特定行上分页的典型表达式(例如,组表达式= Floor(RowNumber(NOTHING) / 1000)
)
我尝试了一些不同的东西,比如编写一些自定义代码和一些运行值表达式,但还没有弄明白。
答案 0 :(得分:0)
我确实知道如何做到这一点。
首先,我在报告定义中创建了以下自定义代码:
Dim GroupingDummy = "GroupDummy"
Dim RowNumberToReturn = -1
Function PopulateRowNumber(GroupString As String) As Integer
If (GroupString <> GroupingDummy ) Then
GroupingDummy = GroupString
RowNumberToReturn = RowNumberToReturn + 1
End If
Return RowNumberToReturn
End Function
请记住我应用于数据集的分组使用了字段Account,Location和Type,我在我的数据集中添加了一个名为RowNumberCalc和表达式的计算字段:
=Code.RowNumberToReturn(Fields!Account.Value + Fields!Location.Value + Fields!Type.Value)
现在,我可以轻松地创建一个组,该组将使用表达式创建1000行的分页符:
=Floor(Fields!RowNumberCalc.Value / 1000)