3

我想交互排序在SSRS矩陣報告。從數據庫中我們得到3列 - 主鍵,列和值。
我們將主鍵和分組列和使用作爲數據。交互式排序在價值SSRS - 矩陣報告

我的矩陣報告 - 矩陣報告

ID    [Columns] 
[Primary Key]  Values 

輸出 -

ID FirstName MiddleName Lastname 
1 Rajiv   Jha  Sharma 
2 Prem   Kumar  Bose 
3 Usha   Shamila Praveena 

我能夠使用交互式排序的ID,因爲ID是行組,但我想用在動態cloumns值(如FirstName,MiddleName和LastName)上進行交互式排序。

預期的結果,當我們的姓氏

ID FirstName MiddleName Lastname 
2 Prem   Kumar  Bose 
3 Usha   Shamila Praveena 
1 Rajiv  Jha  Sharma 

感謝任何幫助交互式排序。

回答

2

您是否使用報告嚮導來構建它?您應該能夠使用列組上的屬性菜單應用交互式排序。

通過在列標題中添加交互式排序按鈕,您可以允許用戶單擊列標題並按該列中顯示的值排序表或矩陣中的父組行。子組的順序保持不變。

要添加一個交互式排序按鈕到列頭排序組:

  1. 在上報告設計表面上的表或矩陣,在列標題右鍵點擊文本框的組,其你想添加一個交互式的排序按鈕。
  2. 單擊文本框屬性。
  3. 單擊交互式排序。
  4. 選擇在此文本框中啓用交互式排序。
  5. 在排序中,單擊組。
  6. 從下拉列表中選擇要排序的組的名稱。對於基於簡單組表達式的組,排序依據值由組表達式填充。

欲瞭解更多信息,請參閱這篇文章:http://technet.microsoft.com/en-us/library/cc627509(v=sql.100).aspx

+1

感謝Lethajd,這個我已經知道了,這徹底我們提供交互式排序僅在矩陣組,但是我希望有一個交互式動態列排序。 – Wumar

+0

爲什麼你開始使用動態列?在你的例子中,列的輸出數似乎是固定的,爲什麼不把它們定義爲這樣,以便你可以做你的排序呢?如果你是動態的,我不認爲這是可以做到的。 – lethaljd

+0

輸出列不固定,這就是我們嘗試使用矩陣的原因。在tablix中,交互式排序只需點擊幾下。 – Wumar

2

相當一個老問題,但我最近偶然發現了類似的問題。 雖然SSRS不允許您在矩陣中的動態列上添加交互式排序,但您可以模擬類似的行爲。我已經想出了一個方法,該方法需要報告根據期望的列排序(通過去報告操作)。

我將使用更復雜的示例來展示此解決方案的全部功能。 想象一下,一個網上書店,它將按照我的示例(專欄)中的Fiction/NonFiction類別,顯示他們的報告顯示他們的客戶(行),書籍數量(價值)和圖書(價值)總價值。當然,他們希望看到他們最好的客戶,所以排序會下降。我們正在從數據庫中獲取 示例數據:

UserID   Columns BooksCount BooksValue 
AliBaba   Fiction 2   25.96 
AliBaba   NonFiction 4   112.00 
ThomasJefferson Fiction 3   36.83 
ThomasJefferson NonFiction 1   46.80 
BillCosby  Fiction 10   536.47 
BillCosby  NonFiction 2   26.87 

報告將是這樣的:

  [Columns]  
      Books Count  Books Value 
[UserID] Values   Values 

我想的報告「叢書計數」或「能夠排序書籍價值「爲任何專欄。下面是要遵循的步驟:

  1. 您需要添加參數將存儲列的名稱進行排序 - @SortColumn和度量名稱(計數或值)進行排序 - @SortMetric

  2. 轉到「Books Count」文本框和添加操作「轉到報告」指定相同的報告。在基礎數據集中添加@SortColumn參數,其值爲[Columns]字段。將值設置爲「BooksCount」添加@SortMetric參數。類似於「書籍價值」文本框。

  3. 可以用以下公式調整列標題文本,這將顯示在該列中的數據進行排序用戶: = IIf(Parameters!SortColumn.Value=Fields!Columns.Value And Parameters!SortMetric.Value = "BooksCount" ," ^","") 這對「書計數」,你可以添加「圖書數量」類似

  4. 最後發生在數據庫站點上的魔術。源表名爲[Sales]。除了排序之外,如果數據集較大,下面的代碼允許只選擇前N行。 您可以使用此代碼創建數據集或更好地創建存儲過程。並且加入報告參數和數據集參數。

DECLARE @TopN INT = 50 

;WITH Users_Sorted AS 
(
    SELECT 
     UserID 
     ,ROW_NUMBER() OVER (ORDER BY 
      CASE @SortMetric 
       WHEN 'BooksCount' THEN Sales.BooksCount 
       WHEN 'BooksValue' THEN Sales.BooksValue 
      END DESC) AS ROWNO 
    FROM Sales 
    WHERE 
     Sales.Columns = @SortColumn 
) 

,Sales_MAIN AS 
(
    SELECT 
     Sales.UserID 
     ,Sales.Columns 
     ,Sales.BooksCount 
     ,Sales.BooksValue 
     ,ISNULL(Users_Sorted.ROWNO, 
      ROW_NUMBER() OVER (PARTITION BY Sales.Columns ORDER BY Sales.UserID ASC) 
      ) AS ROWNO 
    FROM Sales 
     LEFT JOIN Users_Sorted ON Sales.UserID = Users_Sorted.UserID 
) 

SELECT * FROM Sales_MAIN WHERE ROWNO <= @TopN ORDER BY ROWNO