2017-05-22 63 views
0

我建立在Visual Studio 2017年(SSRS)的一份報告,它使用一個存儲過程返回以下數據的差異:如何訪問計數,計算與列和行羣SSRS矩陣

PRODUCT_ID TYPE YEAR STATUS 
    15242  01  1516 ACTIVE 
    54541  02  1617 ACTIVE 
    64454  01  1516 INACTIVE 
    73697  02  1516 INACTIVE 
    98878  03  1617 ACTIVE 

我需要得到每個狀態,每年,每種類型的計數,所以我開始構建一個帶有STATUS作爲第一列組和YEAR作爲其子的矩陣,然後在行組中我只有TYPE。在數據字段我只有計數,所以它看起來像這樣:

  ACTIVE  INACTIVE 
      1516 1617 1516 1617 
    01  1  0  1  0  
    02  0  1  1  0 
    03  0  1  0  0 

我的問題是以下內容。我想添加一個DIFF列(下面的例子)來計算兩年之間的差異,但問題是由於所有動態都是動態完成的,我不知道如何訪問帶有計數的文本框來計算差異。我可以構建一個存儲過程來計算所有這些數字,但是這將是一個較慢的解決方案,因爲字段TYPE將隨着時間而增長。

  ACTIVE    INACTIVE 
      1516 1617 DIFF 1516 1617 DIFF 
    01  1  0 1  1  0  1 
    02  0  1 1  1  0  1 
    03  0  1 1  0  0  0 

任何幫助將不勝感激。謝謝你們提前。

回答

0

我不認爲你可以按照你想要的方式製作一個矩陣,而不需要使用一堆會殺死性能的LookUps。

我會製作一個常規表格並過濾表達式中的數據來分隔年份。你必須根據你的數據找出一些邏輯來確定哪一年是當前的哪一年是哪一年,哪一年是最後一年。

您可以像現在一樣對TYPE使用相同的分組。

屁股ü荷蘭國際集團已確定以前的CAN本年度:

=SUM(IIF(Fields!YEAR.Value = Parameter!Current_Year.Value, 1, 0) 

對於DIFF列,使用

=SUM(IIF(Fields!YEAR.Value = Parameter!Current_Year.Value, 1, 0) - SUM(IIF(Fields!YEAR.Value = Parameter!Previous_Year.Value, 1, 0) 

你可以使用一個變量或在現場你的查詢來識別當前年份 - 它不需要是一個參數。

可能仍然使用您的狀態(Stati?)爲活動和非活動矩陣。

+0

感謝@Hannover Fist的回覆。如何在這種情況下使用變量? –

+0

我實際上從來沒有在SSRS中使用過變量 - 只要我嘗試過,我通常會得到一個錯誤,即在這種情況下不能使用變量(變量值不能用於組表達式中,變量值不能用於報表參數表達式中,集合函數中不能使用變量值...)。當我放棄嘗試進行可變工作時,通常最終會使用參數。這就是說,我會嘗試創建一個基於當年的變量來創建你的年份格式。 **當前年份:** '= CSTR(年份(今日)-1)&CSTR(年份(今日))' –