9
サマリー・レポートの作成
この章では、サマリー・レポートについて学習します。この章の手順に従うと、図9-1に示すようなレポート出力を生成できます。
図9-1 サマリー・レポートの出力
画像の説明
概要
サマリー・レポートには、他のデータのサマリーで構成される列が少なくとも1つ含まれます。サマリー列には、売上の合計値を計算する列、手数料のリストの平均値を計算する列、一連の発注書内での最大金額を示す列などがあります。
データ・リレーションシップ
- サマリー列の値は、別の列から取得されたデータを集計することによって計算されます。Reports Builderでは、パッケージ化されたサマリー・ファンクションを使用してサマリー列の値を計算できます。
- この例に示すように、デフォルトでは、レコード単位でデータを集計した列の値がレポートのデフォルト列に表示されます。ここでは、「全体に対する割合(%)」がデフォルトの表形式の列で示されます。
- 情報のセットごとにデータを集計した列の値(ブレーク・グループごとに1つのサマリー)が、集計される値の列の下に表示されます。
- 1つの最終結果を計算した列の結果が、レポートの一番下に1箇所表示されます。
- これまでの入門用レポートの列とサマリー列が異なるのは、サマリー列はデータベースから選択しないという点です。サマリー列は、作成してレポートのグループに追加します。
- サマリー列を作成するには、少なくとも次の3つのプロパティを定義する必要があります。
- 「ソース」は、サマリー列で計算されるデータを含む列の名前です。ソース列は変更されません。
- 「ファンクション」は、実行されるサマリーのタイプです。ファンクションによって、サマリー列の値の計算方法がReports Builderに伝えられます。Reports Builderに組み込まれているファンクションは、平均、カウント、最初、最後、最大値、最小値、割合(%)、標準偏差、合計および分散です。レポートに必要な計算を実行するサマリー・ファンクションがReports Builderに組み込まれていない場合は、PL/SQLを使用して独自のファンクションを作成できます。
- 「リセット位置」は、サマリー列の値がゼロに戻るレベルまたは頻度です。リセット・レベル(別名リセット・グループ)によって、サマリー列の値をいつゼロにリセットするか、つまりソース列をいくつ集計するかが決まります。レポート全体のソース列のすべての値をサマリー列で集計するように指定できます。また、ブレーク・グループの列の値を集計することも、レコード単位で列の値を集計することもできます。
レイアウト
このレポートでは、マスター/ディテールのレイアウト・スタイルを使用します。
使用例
この例では、売上データを販売員別に表示および集計するレポートを作成します。このレポートには次のサマリーを入れます。
- すべての顧客による全発注の販売員別合計額
- 各販売員の注文合計額に対して、各顧客の発注額が占めるパーセント値
- 注文合計額に対して、各販売員の受注額が占めるパーセント値
- このレポートにおける全注文の総計
このサンプル・レポートの作成過程では、次を行います。
サマリー・レポートのサンプルを表示するには、サンプル・フォルダsummary
を開き、Oracle Reportsのサンプルsummaryb.rdf
を開きます。アクセス方法の詳細は、「はじめに」の「サンプル・レポートへのアクセス」を参照してください。
9.1 この例の前提条件
この章の例を作成するには、Oracle Database付属のOrder Entryサンプル・スキーマに対するアクセス権が必要です。このサンプル・スキーマに対するアクセス権の有無が不明のときは、データベース管理者に問い合せてください。
9.2 データ・モデルとグループ上レイアウトの作成
この例のように、単一問合せレポートを作成する場合、レポート・ウィザードを使用して、データ・モデルとレイアウトを同時に作成できます。
データ・モデルとレイアウトを作成するには:
- Reports Builderを起動します。すでに起動している場合は、「ファイル」→「新規」→「レポート」を選択します。
- 「ようこそ」ダイアログ・ボックスまたは「新規レポート」ダイアログ・ボックスで、「レポート・ウィザードを使う」を選択して「OK」をクリックします。
- 「ようこそ」ページが表示されたら、「次へ」をクリックします。
- 「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択し、「次へ」をクリックします。
- 「スタイル」ページでレポートのタイトルを入力し、「グループ上」を選択して、「次へ」をクリックします。
- 「データ・ソース」ページで、「SQL問合せ」をクリックし、「次へ」をクリックします。
- 「データ」ページの「データ・ソース定義」フィールドに次のSELECT文を入力します。
SELECT SALES_REP_ID, CUSTOMER_ID, SUM(ORDER_TOTAL) TOTAL
FROM ORDERS
GROUP BY SALES_REP_ID, CUSTOMER_ID
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
summary_code.txt からコードをコピーして、「データ・ソース定義」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「データ・ソース定義」フィールドにコードを入力します。
|
- 「次へ」をクリックします。
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第9.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 「グループ」ページで、「SALES_REP_ID」をクリックし、「>」ボタンをクリックして、このフィールドを「グループ・フィールド」リストに移動し、「次へ」をクリックします。
図9-2 レポート・ウィザードの「グループ」ページ
画像の説明
- 「フィールド」ページで「>>」ボタンをクリックして、すべてのフィールドを「表示フィールド」リストに移動し、「次へ」をクリックします。
- 「合計」ページで、「使用可能フィールド」リストの「TOTAL」をクリックし、「合計」をクリックします。ここで使用しているデータ・モデルでは、この手順で次の2つのサマリー列が作成されます。
- SumTOTALPerSALES_REP_IDでは、SALES_REP_IDの値ごとに(つまり販売員別に)TOTALの値が合計されます。
- SumTOTALPerReportでは、レポート全体(つまり全販売員)のTOTALの値が合計されます。
- さらに「合計」ページで「%合計」をクリックします。ここで使用しているデータ・モデルでは、この手順で次の2つの列が作成されます。
- TotalTOTALPerCUSTOMER_IDでは、各顧客(CUSTOMER_ID)の金額が、各販売員(SALES_REP_ID)の合計金額に占めるパーセント値として計算されます。
- TotalTOTALPerSALES_REP_IDでは、各販売員(SALES_REP_ID)の金額が、レポート全体の合計金額に占めるパーセント値として計算されます。
図9-3 レポート・ウィザードの「合計」ページ
画像の説明
- 「次へ」をクリックします。
- 「ラベル」ページで、ラベルを次のように変更し、「次へ」をクリックします。
- 「テンプレート」ページの「事前定義テンプレート」で「Beige」が選択されていることを確認します。
- 「終了」をクリックして、レポート出力をペーパー・デザイン・ビューに表示します。
9.3 フィールドの書式設定
ペーパー・デザイン・ビューの「合計」フィールドを見てください。値は、位置合せも金額表示もされていません。これらの点は、ペーパー・デザイン・ビューですぐに調整できます。
書式マスクを金額に割り当てるには:
- ペーパー・デザイン・ビューで、「Dollars」ラベルの下に表示されている最初の数値を選択します。すべての値が選択されるので、それらのプロパティを同時に変更できます。
ヒント
書式マスクの構文に精通している場合は、フィールドの値を右クリックして「プロパティ・インスペクタ」を選択し、「書式マスク」プロパティの値を選択するか、手動で入力してもかまいません。
|
- ツールバーの「通貨」ボタンをクリックします。すべての値の横に通貨記号が表示されます。
- 「10進桁を追加」ボタンを2回クリックします。小数点の右側に少数点以下2桁が追加されます。
- フィールドの一番右側にあるハンドルをクリックし、そのまま左へ約0.5インチ(1.5 cm)ドラッグして、フィールドのサイズを変更します。
- 「右に整列」ボタンをクリックします。すべての値が右詰めになります。
- 「Dollars」ラベルを選択します。
- 「右に整列」ボタンをクリックします。
- 「合計:」ラベルの右側にある数値を選択します。
- 「通貨」ボタンをクリックします。すべての値の横に通貨記号が表示されます。
- 「10進桁を追加」ボタンを2回クリックします。小数点の右側に少数点以下2桁が追加されます。
- 「右に整列」ボタンをクリックします。すべての値が右詰めになります。
図9-4 金額が書式設定されたサマリー・レポートの出力
画像の説明
- レポートの最後に進んでください。最終ページの最後の値は、「合計:」というラベルの付いたサマリーとなります。この値は、レポート全体のTOTALの合計値です。
- 「合計:」ラベルの右側にある、書式設定されていない数値を選択します。
- このフィールドをクリックし、その右端が「合計」列の値の右端と揃うまでドラッグします。
- ツールバーの「通貨」ボタンをクリックします。「合計」の値の横に通貨記号が表示されます。
- 「10進桁を追加」ボタンを2回クリックします。小数点の右側に少数点以下2桁が追加されます。
- 「右に整列」ボタンをクリックします。すべての値が右詰めになります。
- レポートを
summaryb_<自分のイニシャル>.rdf
という名前で保存します。
図9-5 レポートの合計が書式設定されたサマリー・レポート
画像の説明
9.4 サマリー列のプロパティのチェック(オプション)
この例では、プロジェクトの要件に従って、レポート・ウィザードによりサマリーが作成されました。ただし、場合によっては、希望どおりの計算を行うためにサマリーの設定を手動で調整する必要があります。レポート・ウィザードで作成されたサマリーを入念に確認すれば、サマリーの機能がさらに理解しやすくなります。
この項では、レポートの変更は行いません。サマリーの理解を深めるために、サマリーの設定を確認するにとどめます。
サマリーの設定の確認
- ペーパー・デザイン・ビューで、「全体に対する割合(%)」ラベルの右に表示されているパーセント値を選択します。
- 値をダブルクリックして、プロパティ・インスペクタを表示します。
- プロパティ・インスペクタの「ソース」プロパティを見てください。ここには、このフィールドのソースとなる列が示されています。
- レポート内のすべてのサマリーについて手順1〜3を繰り返します。これらのサマリー・フィールドそれぞれについて、ソースとなる列の名前を書き留めます。
- オブジェクト・ナビゲータで、「データ・モデル」ノードの横のビュー・アイコンをダブルクリックして、データ・モデル・ビューを表示します。
- データ・モデル・ビューで、G_SALES_REP_IDグループの「TotalTOTALPerSALES_REP_ID」をダブルクリックして、プロパティ・インスペクタを表示します。
- プロパティ・インスペクタでは、「サマリー」の下のプロパティの値は次のように設定されています。
- 「ファンクション」の値は「割合(%)」です。「割合(%)」を「合計」に変更します。「計算位置」プロパティは、「合計」の計算には不要なので非表示になります。「ファンクション」の値を「割合(%)」に戻すと、「計算位置」プロパティが再表示されます。
- 「ソース」の値は「TOTAL」列です。したがって、サマリーの計算にはTOTALが使用されます。
- 「リセット位置」の値は「G_SALES_REP_ID」です。TotalTOTALPerREPIDの値は、G_SALES_REP_IDの各レコード(つまり各販売員)の後でゼロにリセットされます。
- 「計算位置」の値は「Report」です。計算レベルが「Report」というのは、TotalTOTALPerSALES_REP_ID列のパーセント値が、レポート全体のTOTALの合計に基づいていることを意味します。
- データ・モデル内の各サマリーについて手順6〜7を繰り返します。サマリーごとのプロパティ値に相違があることがわかります。
- ペーパー・デザイン・ビューに戻り、サマリーに対応するフィールドがレイアウトのどこに配置されているかを確認することも有益です。たとえば、TotalTOTALPerSALES_REP_IDに対応するフィールドは、マスター繰返し枠R_G_SALES_REP_IDの内側、そしてディテール繰返し枠R_G_CUSTOMER_IDの外側に配置されています。
9.5 まとめ
これで、すべての作業が完了しました。サマリー・レポートは正常に作成されました。この章で学習した内容は次のとおりです。
- レポート・ウィザードを使用して、サマリーを含むデータ・モデルを作成し、データをレイアウトする。
- ペーパー・デザイン・ビューでフィールドの書式を設定する。
- サマリーとそのプロパティをチェックする。
この例で使用されているウィザード、ビュー、プロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照してください。このヘルプは、第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」で説明しているとおり、Reports BuilderまたはOracle Technology Network(OTN)から表示できます。