从矩阵中划分两个特定值

时间:2013-09-25 09:59:32

标签: reporting-services-2012

我的报告中定义了一个类似于此的矩阵:

SSRS Matrix

我想添加另一行Total来自Row 5除以Total

Row 1

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

第一列已分组,总计列为SUM。我需要根据分组列选择总值并将两者分开。

1 个答案:

答案 0 :(得分: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 code variable resetting on new page