合計およびその他の集計の計算 (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。この行には、詳細の行ハンドル (詳細行の 3 本の平行線を持つ行ハンドル) で示される詳細データが表示されます。[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 を非表示にする例」を参照してください。

変更履歴

変更内容

カスタム集計のリンクを追加しました。