2017-03-08 13 views
1

私のTablixを報告SSRSでのTablixをグループ化することは、列 は条件付き

Country, City, College, totalstudent,passedstudent,failedstudent 

私は値「国/都市/大学」と「GROUPBY」パラメータを持って

に次ました。だから私は、パラメータのいずれかを選択すると、私のtablixは、そのパラメータでグループ化され、そのようにパラメータ列+合計、合格、失敗した列だけでなければならない

例えば、 ユーザーがGROUPBY =「市」を選択した場合、Tablixのは、その都市にグループ化された合計で合格と失敗し、

City, totalstudent, passedstudent, failedstudent 

合計値が表示されます。

同様の論理を国や大学にも適用する必要があります。

これまでのところ、すべての列を国別、都市別、大学順に適用して表示できます。私が取得したすべてのこれらの値を持っている生データセットを持っている:

を(グループ化する簡単なSSRSの一つである)

注(私の必要性は、唯一のパラメータに基づいてグループ分け1を適用し、その特定の列を表示することです)私のSQLデータベースからインラインSQLを使用しています。 (データセット1:国、都市、カレッジ、合計生徒、受講生、障害学生)

+0

少し前と同じようでしたか?私のSQLでは、不要なグループのセルを空に戻します。報告書では、セルごとのグループが空であれば行を隠しました。あなたがそれをコード化する必要があるので、あなたが拡大して崩壊する必要がないように祈ってください。 – Snowlockk

答えて

2

表を式でグループ化できます。他の列は、普通のSum機能を使用すると、任意のグループで作業することができるはず

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

:あなたのグループのプロパティでは、このような何かを書くでしょう。

+0

ありがとうSteven、SSRSのデータセットレベルでグループ化してみましたが、これはSQLからすべての列を取得しているので、グループ化されたデータをロードするのに約10秒かかります。列ごとにソートする必要があるので、非常に遅いです。だから、私はグループ化のロジックをSQLにシフトしました – Aarush

-1

データセットを作成するときは、直接ボックスにクエリーを書き込まないでください。代わりにexpressionを使用してください。

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

あなたの "passedstudent" と "failedstudent" になりますいくつかの集約、どちらかCOUNTまたはSUMは、あなたのケースに依存します。

+0

同様の概念を使用しましたが、レポートレベルではなくSQLレベルでgroupby変数をクエリに渡しました – Aarush

0

私は

  1. (私は最後の/第三のアプローチを経て)異なるグループ化条件に使用する複数のTablixを別のアプローチを試みたと報告 落とし穴に正しいのTablixを表示/非表示にするパラメータを使用:私は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 

は今、私は、単一のTablixの中で私の最初の列と、残りの列の集計値の残りの部分でGroupTitleを使用しています。 出力は次のようになります。 SSRS Report sample output