2017-03-08 90 views
1

我的表矩陣具有以下列在SSRS有條件分組表矩陣報告

Country, City, College, totalstudent,passedstudent,failedstudent 

我有一個參數「的GroupBy」與價值觀「的國家/城市/大學」。所以,當我選擇其中一個參數時,我的tablix應該按該參數分組,並且只能使參數列+總數,通過,失敗的列數

例如, 如果用戶選擇的GroupBy =「市」,那麼,該表矩陣將顯示

City, totalstudent, passedstudent, failedstudent 

總數的值,通過和失敗的是在這個城市分組總和。

類似的邏輯也應該適用於國家和大學。

因此,我能夠顯示所有列與分組適用於國家,然後城市,然後大學。 (這是簡單的SSRS分組之一)

(分組基於參數我需要的是僅適用獨一無二表明,特定的列)

注:我有一個具有檢索到的所有這些值的原始數據集使用我的sql數據庫的內聯sql。 (數據集1:國家,城市,學院,總學生,學生,失敗學生)

+0

前段時間做了類似的事情。對於我的sql,我將不需要的組的單元格發回爲空。然後在報告中,如果逐個單元格爲空,則隱藏該行。祈禱你不需要擴展和崩潰,因爲那時你需要對它進行編碼。 – Snowlockk

回答

2

您可以通過表達式對錶格進行分組。在您的組的屬性,你會寫是這樣的:

=Switch(Parameters!GroupBy.Value = "City", Fields!City.Value 
    , Parameters!GroupBy.Value = "College", Fields!College.Value 
    , ...) 

其他列應該能夠只使用常規的Sum職能和工作有任何分組。

+0

謝謝史蒂芬,我試圖在SSRS數據集級別進行分組,這對我來說似乎非常慢,因爲我從sql獲取原始記錄的所有列,並且大約需要10秒才能加載分組數據。既然,我還需要對每一列進行排序,這是非常緩慢的。所以,我將分組的邏輯轉向sql – Aarush

-1

創建數據集時,不要直接在框中輸入查詢---而是使用表達式。

="SELECT " + Parameters!GroupBy.Value + ", passedstudent, failedstudent 
    FROM Table GROUP BY " + Parameters!GroupBy.Value 

你 「passedstudent」 和 「failedstudent」 會有一些聚集,無論是COUNTSUM,取決於你的情況。

+0

使用類似的概念,但不是在報表級別,而是通過將groupby變量傳遞給我的查詢來實現sql級別 – Aarush

0

我嘗試了不同的方法(我到最後/ 3的方式去)

  1. 使用多個表矩陣爲不同的分組情況和使用的參數隱藏/顯示正確的表矩陣報告 陷阱:這是非常緩慢的,因爲我有4種不同的分組條件並放入4種不同的tablix。

  2. 使用動態分組概念,如(http://www.advancedssrs.com/2014/01/how-can-i-use-dynamic-grouping.html)所示,這很好。但它不適合我的情況,因爲在嘗試對SSRS中的列進行排序時,它也相對較慢。 (我需要所有列中的排序功能)

  3. 創建一個新參數(groupby),用於模擬製表符的場景。因此,當用戶選擇其中一個值(國家/城市/學院)時,我使用條件分組語句將基於此groupby參數值的SQL結果分組,並將結果返回給SSRS。


    SELECT 
    CASE WHEN @GroupBy = 'Country' THEN CountryName 
    WHEN @GroupBy = 'City' THEN CityName 
    WHEN @GroupBy = 'College' THEN CollegeName 
    END AS GroupTitle, 
    SUM(totals) AS totalstudent, 
    SUM(passes) AS passedstudent, 
    SUM(fails) AS failedstudent, 
    FROM #temp 
    GROUP BY CASE WHEN @GroupBy = 'Country' THEN CountryName 
    WHEN @GroupBy = 'City' THEN CityName 
    WHEN @GroupBy = 'College' THEN CollegeName 
    END 
    ORDER BY 1 
    DROP TABLE #temp 

現在,我使用GroupTitle在我的第一列,其餘列的聚合值的其餘部分在一個單一的表矩陣。 輸出看起來像: SSRS Report sample output