vst*_*ien 13 aggregate-functions reporting-services
使用此数据集:
Category | Amount
A | 5
A | 3
B | 6
B | 2
B | 1
C | 7
Run Code Online (Sandbox Code Playgroud)
我想在类别上创建一个tablix分组,显示总金额的百分比:
Category | Percentage
A | 33%
B | 38%
C | 29%
Run Code Online (Sandbox Code Playgroud)
这应该是一个简单的计算:
Category | Percentage
A | ((Sum of Amount within group / Sum of Amount across groups) * 100)%
B | ((Sum of Amount within group / Sum of Amount across groups) * 100)%
C | ((Sum of Amount within group / Sum of Amount across groups) * 100)%
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何在报表设计器(SSRS)中执行此操作 - 每当我创建行分组时Category,我都可以获得组内的总和=Sum(Fields!Amount.Value).但是如何从组内的单元格中获取各组之间的总和?
vst*_*ien 26
我会回答我自己的问题.
在任何表达式中,都可以在所有数据集中执行查找.通过这种方式我们将获得数据:
LookupSet(SourceFieldToCompare, TargetFieldToCompare, ResultField, DataSet)
Run Code Online (Sandbox Code Playgroud)
现在,让我们提高问题的标准,并说数据分组在另一个维度,几个月 - 像这样:
Category | January | February | March
A | 33% | 37% | 35%
B | 38% | 36% | 37%
C | 29% | 27% | 28%
Run Code Online (Sandbox Code Playgroud)
假设问题中提到的数据集名为"类别".现在,调用LookupSet函数(参考):
LookupSet(Fields!Month.Value, Fields!Month.Value, Fields!Amount.Value, "categories")
Run Code Online (Sandbox Code Playgroud)
(请记住,第一个"月"链接到Tablix中的数据集,第二个参数中的第二个"月"是"类别"数据集中的"月"!)
还有一个问题:LookupSet返回不会吃的Object类型Sum.您需要使用自定义聚合(在"报告属性"中添加自定义代码):( 来源)
Function SumLookup(ByVal items As Object()) As Decimal
If items Is Nothing Then
Return Nothing
End If
Dim suma As Decimal = New Decimal()
suma = 0
For Each item As Object In items
suma += Convert.ToDecimal(item)
Next
Return suma
End Function
Run Code Online (Sandbox Code Playgroud)
现在,通过调用Code.SumLookup该LookupSet函数的总和来计算的所有领域.
| 归档时间: |
|
| 查看次数: |
18290 次 |
| 最近记录: |