1

我在报告中定义了一个矩阵,看起来类似于:

SSRS 矩阵

我想添加另一行,即来自的TotalRow 5除以来自的TotalRow 1

由于这些行是动态生成的,我该怎么做?

第一列是分组的,Total 列是一个SUM. 我需要根据分组列选择 Total 值并将两者分开。

4

1 回答 1

1

第 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()

注意:我尚未对此进行测试,因此可能存在一些拼写错误或语法错误,但您大致了解。

根据您使用它的方式,您可能需要考虑不将变量声明为“共享”:

在新页面上重置 SSRS 代码变量

于 2013-12-18T09:06:05.247 回答