2011-11-11 4 views
13

内のグループ全体で集計をグループ内で凝集体を組み合わせるために:どのようにこのデータセットではSSRS

Category | Amount 
A  | 5 
A  | 3 
B  | 6 
B  | 2 
B  | 1 
C  | 7 

私は合計金額の割合を表示し、カテゴリにグループ化Tablixのを作成したい:

Category | Percentage 
A  | 33% 
B  | 38% 
C  | 29% 

Category | Percentage 
A  | ((Sum of Amount within group/Sum of Amount across groups) * 100)% 
B  | ((Sum of Amount within group/Sum of Amount across groups) * 100)% 
C  | ((Sum of Amount within group/Sum of Amount across groups) * 100)% 

しかし、私は再内にそれを行う方法を見つけ出すことはできません。単純計算する必要があります

ポートデザイナ(SSRS) - Categoryで行グループを作成するときは、グループ内の合計を=Sum(Fields!Amount.Value)で取得できます。しかしグループ内のセルからグループ全体の合計を取得する方法は?

答えて

26

私自身の質問にお答えします。

任意の式から、すべてのデータセットでルックアップを実行することができます。 、の質問のためのバーを上げ、データがまだ別の次元でグループ化されているとしましょう、今すぐヶ月を

LookupSet(SourceFieldToCompare, TargetFieldToCompare, ResultField, DataSet) 

- このように:この方法を通して、私たちはデータを取得します

Category | January | February | March 
A  | 33%  | 37%  | 35% 
B  | 38%  | 36%  | 37% 
C  | 29%  | 27%  | 28% 

セイこの質問に記載されているデータセットは「カテゴリ」と呼ばれます。さて、LookupSet機能(Reference)を呼び出す:

LookupSet(Fields!Month.Value, Fields!Month.Value, Fields!Amount.Value, "categories") 

(最初の「月」がTablixの内部のデータセットにリンクされていることを心に留めておくと、第二引数で第二の「月」「月であります"カテゴリ"データセットから)

LookupSetはObjectタイプを返します。Sumは食べません。合計は、すべてのフィールドから計算されLookupSet機能にCode.SumLookupを呼び出すことで、今(Source

Function SumLookup(ByVal items As Object()) As Decimal 
    If items Is Nothing Then 
    Return Nothing 
    End If 

    Dim suma As Decimal = New Decimal() 
    suma = 0 

    For Each item As Object In items 
    suma += Convert.ToDecimal(item) 
    Next 

    Return suma 
End Function 

:カスタム集計を、(カスタムコードは、「レポートのプロパティ」で追加される)を使用する必要があります。

+3

+1これは本当に私を怒らせる原因になっています。なぜあなたはSum aggで動作しないLookupSet関数を提供しますか? –

2

あなたはSUMはに対して実行されるようになっているグループを識別するために、スコープ記述子を使用することもできました:

  • カテゴリーグループがTablixの行グループに定義されています。
  • DataSet1はデータセットの名前です。

グループ化された量:[合計(金額)]

データセット合計:SUM(!フィールズAmount.Value、 "DATASET1")

割合:SUM(フィールドAmount.Value、「カテゴリー! ")/SUM(Fields!Amount.Value、" DataSet1 ")

関連する問題