我在报告中定义了一个矩阵,看起来类似于:
我想添加另一行,即来自的Total
值Row 5
除以来自的Total
值Row 1
由于这些行是动态生成的,我该怎么做?
第一列是分组的,Total 列是一个SUM
. 我需要根据分组列选择 Total 值并将两者分开。
我在报告中定义了一个矩阵,看起来类似于:
我想添加另一行,即来自的Total
值Row 5
除以来自的Total
值Row 1
由于这些行是动态生成的,我该怎么做?
第一列是分组的,Total 列是一个SUM
. 我需要根据分组列选择 Total 值并将两者分开。
第 1 行和第 5 行的值是恒定的,还是您要计算的行号始终是 1 和 5?
您可以使用自定义代码将值存储在变量中,然后使用这些值执行计算。
创建一个同时接受 Col1 值和 Col2 计算值的函数。然后它将 Row1 分配给 var1,将 Row5 分配给 var2。然后它将返回 Col2 的值以显示为 Total 值。
说得通?如果您需要有关该功能的帮助,请告诉我...
编辑
SSRS:
Col 1 | Col 2 | Col 2 Expression
England | 201 | =Code.SetOneFive(Count(Fields!Country.Value))
Ireland | 451 | =Code.SetOneFive(Count(Fields!Country.Value))
Scotland | 215 | =Code.SetOneFive(Count(Fields!Country.Value))
Wales | 487 | =Code.SetOneFive(Count(Fields!Country.Value))
Zenovia | 2145 | =Code.SetOneFive(Count(Fields!Country.Value))
代码:
Public Shared Dim i as Integer = 1
Public Shared Dim rowOne as Integer
Public Shared Dim rowFive as Integer
Public Function SetOneFive (byval _OneFive As Integer) as Integer
If i = 1 then
rowOne = _OneFive
Else If i = 5 then
rowFive = _Onefive
End If
i = i + 1
End Function
Public Function GetRowOne () As Integer
GetRowOne = RowOne
End Function
Public Function GetRowFive () As Integer
GetRowFive = RowFive
End Function
对于代码的每次迭代,i 都会增加 1。每次迭代都会检查 1 或 5 的值。
在您的总列中,您可以使用:
=Code.GetRowFive() / Code.GetRowOne()
注意:我尚未对此进行测试,因此可能存在一些拼写错误或语法错误,但您大致了解。
根据您使用它的方式,您可能需要考虑不将变量声明为“共享”: