2013-09-25 40 views
1

我在報告中定義的基質中類似於這樣劃分兩個特定值值來自Row 1從矩陣

由於這些行是動態生成的,我怎麼能做到這一點?

第一列是分組的,而Total列是SUM。我需要根據分組列將總數值挑出來,然後除以二。

+0

你有沒有考慮使用組變量來存儲總量,然後與做你所需的計算那? –

+0

@ mr.theTrain我該怎麼做?我認爲對我來說最簡單的選擇是將這些計算的大部分移動到SQL Server並保持報告非常簡單。 – codingbadger

+0

不確定這是否直接適用於您的情況,但報告變量的好教程http://www.wiseowl.co.uk/blog/s283/group-variables.htm –

回答

1

行1和行5的值是否不變,或者您計算的行數始終是1還是5?

您可以使用自定義代碼將值存儲在變量中,然後使用這些值執行計算。

創建一個同時採用Col1值和Col2的計算值的函數。然後它將Row1分配給var1,將Row5分配給var2。然後它將返回Col2的值作爲總值顯示。

有意義嗎?讓我知道如果你需要一些幫助,功能...

編輯

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 

對於代碼的每一次迭代,我增加1.這是檢查每次迭代的值爲1或5.

在你的總列然後你可以使用:

=Code.GetRowFive()/Code.GetRowOne() 

注:我還沒有測試,所以可能會有一些錯別字或語法錯誤,但你的總體思路。

取決於你如何使用這個你可能要考慮不聲明變量作爲「共享」:

SSRS code variable resetting on new page

+0

它們不是恆定的。他們是動態的,行號將基於任何值是第1列。 – codingbadger

+0

對不起,我認爲我在我的問題中沒有具體說明,我會將其編輯爲更精確。 – user3056839