合計およびその他の集計の計算 (Reporting Services)
Tablix データ領域には、レポート データセット、データ領域、またはグループの集計値を表示できます。[合計の追加] コマンドの既定の集計、および既定のスコープを使用できます。また、組み込み関数とは異なる集計関数を指定したり、異なるスコープを指定することもできます。
カスタム コードでグループ変数を使用することにより、集計計算をカスタマイズできます。詳細については、「グループ変数を使ったカスタム集計 (Reporting Services 2008)」を参照してください。
[合計の追加] コマンドについて
Tablix データ領域の総計とグループ小計を表示するには、ショートカット メニューの [合計の追加] コマンドを使用します。[合計の追加] は状況依存のコマンドです。行グループ領域のセルを右クリックして [合計の追加] コマンドを選択すると、そのグループの外に合計用の行が自動的に追加されます。列グループ領域のセルを右クリックして [合計の追加] コマンドを選択すると、そのグループの外に合計用の列が自動的に追加されます。数値フィールド式を含む本文領域のセルを右クリックして [合計の追加] コマンドを選択した場合は、合計を行に追加するか、列に追加するかを指定できます。[合計の追加] コマンドの使用方法の詳細については、「グループまたは Tablix データ領域に合計を追加する方法 (Reporting Services)」を参照してください。
既定では、[合計の追加] コマンドは Sum 関数を使用します。ただし、Sum 関数を別の組み込み関数に変更し、スコープに対して異なる集計を実行することができます。独自の式を作成し、あるスコープの集計値を別のスコープを基準にして計算することもできます。たとえば、完全なデータセットに対するグループ値の比率を計算することができます。組み込み関数を使用して集計を実行する方法の詳細については、「式での組み込みのレポート関数と集計関数の使用 (Reporting Services)」を参照してください。組み込み関数の一覧は、「式での組み込みのレポート関数と集計関数の使用 (Reporting Services)」を参照してください。
既定のスコープについて
Tablix データ領域の処理と表示に伴い、レポート デザイナは、セルのスコープのコンテキストで各 Tablix セルの値を評価します。セルが行グループまたは列グループに関連する行にある場合、セルは複数のグループに属することができます。セルが属しているグループ セット (データ領域)、または式の評価対象のデータセットをスコープと呼びます。そのセルが属している最も内側の行グループと列グループが既定のスコープとなります。視覚的な手掛かりにより、選択されたセルがメンバとして属するグループを識別することができます。詳細については、「Tablix データ領域のセル、行、および列について」を参照してください。
既定のスコープの例として、日付に基づく親行グループと、順序に基づく子行グループ、および詳細グループを含む図を次に示します。
この図は、複数行の Tablix 本文のセルに含まれる Qty および LineTotal のフィールド式を示しています。次の一覧では、各行のこれらのフィールド式の既定のスコープについて説明しています。
行 1。この行には静的なテキスト列のラベルが表示されます。既定のスコープは、データ領域です。この行 1 は 1 回だけ繰り返され、ヘッダー行と呼ばれることがあります。
行 2。この行には、詳細の行ハンドル () で示される詳細データが表示されます。[Qty] の既定のスコープは詳細グループです。これはすべてのデータセット、データ領域、およびグループ フィルタの適用後にこのデータ領域にバインドされるデータセット内のデータです。この行は、データセット クエリの結果セットの行ごとに 1 回繰り返されます。[Qty] 値は、データセットの詳細データを表示します。
行 3。この行に集計値が表示されます。[Sum(Qty)] の既定のスコープは、子行グループの Order です。この行は、順序番号値ごとに 1 回繰り返されます。[Sum(Qty)] 値は、注文番号ごとの集計合計を表示します。
行 4。この行に集計値が表示されます。[Sum(Qty)] の既定のスコープは、親行グループの Date です。この行は、日付値ごとに 1 回繰り返されます。[Sum(Qty)] 値は日付ごとの集計合計を表示します。
行 5。この行に集計値が表示されます。[Sum(Qty)] の既定のスコープは、データ領域です。この行は 1 回だけ繰り返され、フッター行と呼ばれることがあります。[Sum(Qty)] 値は、データ領域の集計合計を表示します。
コンテキストとスコープの詳細については、「式での組み込みのレポート関数と集計関数の使用 (Reporting Services)」を参照してください。Tablix データ領域の視覚的手掛かりの解釈の詳細については、「Tablix データ領域のセル、行、および列について」を参照してください。
名前付きスコープを使用した集計計算の指定
既定以外のスコープを指定するには、名前付きスコープを指定します。名前付きスコープには、データセットの名前、データ領域、またはグループなどが含まれます。式は状況に依存するため、組み込み関数に対して有効な名前付きスコープを指定する必要があります。各組み込み関数は、パラメータとして有効なスコープを指定します。詳細については、「式での組み込みのレポート関数と集計関数の使用 (Reporting Services)」の各関数参照についてのトピックを参照してください。
既定のスコープを名前付きスコープに変更する方法の例として、次のデータ構造のレポートを想定します。
Sales という名前のレポート データセット。
次のグループを含む Tablix1 という名前のテーブル データ領域。
Subcat という名前の子グループを含む Category という名前の親行グループ。
CountryRegion という名前の子グループを含む Geography という名前の親列グループ。
このレポートに対して [合計の追加] コマンドを使用し、さまざまなセルに合計を追加します。この結果レポートは、次の図に似たものになります。
この図では、セルの 1 つが選択されています。選択されたこのセルでは、オレンジ色のグループ インジケータの角かっこは、最も内側のグループ Category グループと CountryRegion グループのメンバシップを示しています。これらの最も内側のグループ メンバシップはこのセルの既定のスコープを定義します (選択されたセルには、Subcat 行グループと Geography 列グループを示す 2 つの灰色の角かっこもあります。灰色の角かっこでマークされたグループは、選択された最も内側のグループの外側のグループか、選択されたセルのスコープ外です)。
選択されたこのセルには式 [Sum(LineTotal)] が含まれます。セルのスコープと式に基づき、表示レポートには、テキスト ボックスの値として CountryRegion 値ごとの Subcat 値の [LineTotal] の合計が表示されます。
このセルのスコープは、次の方法により式の Sum 関数を置換せずに変更することができます。
Sales データセットとなるようにスコープを変更します。たとえば、データセットの合計を指定するには、式を =Sum(Fields!LineTotal.Value, "Sales") に変更します。
Tablix1 データ領域全体となるようにスコープを変更します。たとえば、グループが全データ領域に占める比率を計算するには、式を =Sum(Fields!LineTotal.Value)/Sum((Fields! LineTotal.Value),"Tablix1") に変更します。
この新しい式では、分子 Sum(Fields! LineTotal.Value) は各カテゴリの行の合計の総計と同じ値です。分母 Sum((Fields! LineTotal.Value), "Tablix1") はデータ領域の行の合計の総計と同じ値です。結果は、各カテゴリがデータ領域全体に占める比率になります。
選択されたセルでは、Sum 関数に対して CountryRegion、Geography、または Category のいずれかのグループ スコープを指定できます。このセルは Subcat グループに関連する行にないので、グループ スコープ Subcat は指定できません。
注意 集計関数ではスコープを 1 つだけ指定できます。分母の式では、スコープとして "Category" と "Geography" の両方を同時に指定することはできません。複数のスコープを指定することはサポートされていません。
組み込み関数の一覧については、「式での組み込みのレポート関数と集計関数の使用 (Reporting Services)」を参照してください。
異なるスコープの指定の例
次の表に、既定のスコープ、データ領域スコープ、およびデータセット スコープを使用する式の例を示します。これらの例では、"Tablix1" という名前の Tablix データ領域があり、販売注文の行アイテムの合計を含む "LineTotal" という名前のフィールドのある "Sales" という名前のデータセットがあることを想定しています。
説明 |
式 |
---|---|
現在のスコープの行アイテム合計の総合計です。 |
=Sum(Field!LineTotal.Value) |
(現在のスコープの行アイテム合計の総合計)/(データ領域の行の合計の総合計) の比率。 この値は、テキスト ボックスの既定の表示形式を使用して書式設定されます。 |
=Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Tablix1") |
CountryRegion グループに関連付けられている行に配置した場合。 (CountryRegion グループの行アイテム合計の総合計)/(Geography グループの行の合計の総合計) の比率。 この値は、テキスト ボックスの既定の表示形式を使用して書式設定されます。これはフォーム #.#% に対して P1 に設定する必要があります。 |
=Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Geography") |
(現在のスコープの行アイテム合計の総合計)/(データ領域の行の合計の総合計) の比率。 この値は IIF を使用して書式設定されるため、現在のグループに行アイテムの合計がない場合、結果は空白になります。 |
=IIF(Sum(Field!LineTotal.Value)<=0,"", FormatPercent(Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Tablix1"),1) |
(現在のスコープの行アイテム合計の総合計)/(データセットの行アイテムの合計の総合計) の比率。 この値は FormatPercent を使用して書式設定され、小数点以下 1 桁を指定します。 |
="Percentage contributing to all sales: " & FormatPercent(Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Sales"),1) |
セルの NULL 値または 0 の非表示
多くのレポートでは、グループにスコープが設定された計算でゼロ (0) または NULL 値を含むセルが多数生成される場合があります。レポートを見やすくするためには、集計値が 0 の場合に空白を返す式を追加します。詳細については、「式の例 (Reporting Services)」の「NULL 値および 0 を非表示にする例」を参照してください。
変更履歴
変更内容 |
---|
カスタム集計のリンクを追加しました。 |