26
ネストしたマトリックス・レポートの作成
この章では、ネストしたマトリックス・レポートについて学習します。この章の手順に従うと、図26-1に示すようなレポート出力を生成できます。
図26-1 ネストしたマトリックス・レポートの出力
画像の説明
概要
使用例
この例では、年度と部門ごと、および職種ごとに給与をクロス集計するレポートを作成します。結果のマトリックスには、一番上に横方向の職種、左端に縦方向の年度と部門が表示され、セル内には給与の合計が含まれます。これにより、部門20に属す事務員の給与合計がすぐにわかり、これを別の部門の事務員の給与合計と比較できます。
このサンプル・レポートの作成過程では、次を行います。
ネストしたマトリックス・レポートのサンプルを表示するには、サンプル・フォルダnestedmatrix
を開き、Oracle Reportsのサンプルnested1b.rdf
、nested4b.rdf
またはnested3b_brk.rdf
のいずれかを開きます。それらのファイルへのアクセス方法の詳細は、「はじめに」の「サンプル・レポートへのアクセス」を参照してください。
26.1 この例の前提条件
この章の例を作成するには、Oracle Database付属のSCOTTサンプル・スキーマに対するアクセス権が必要です。このサンプル・スキーマに対するアクセス権の有無が不明のときは、データベース管理者に問い合せてください。
26.2 単一問合せマトリックスの作成
データ・モデルに1つの問合せが含まれるマトリックス・レポートを作成できます。単一問合せデータ・モデルは一般に、複数問合せデータ・モデルよりもパフォーマンスが向上します。
この例のように、単一問合せレポートを作成する場合、レポート・ウィザードを使用して、データ・モデルとレイアウトを同時に作成できます。
データ・モデルとレイアウトを作成するには:
- Reports Builderを起動します。すでに起動している場合は、「ファイル」→「新規」→「レポート」を選択します。
- 「ようこそ」ダイアログ・ボックスまたは「新規レポート」ダイアログ・ボックスで、「レポート・ウィザードを使う」を選択して「OK」をクリックします。
- 「ようこそ」ページが表示されたら、「次へ」をクリックします。
- 「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択し、「次へ」をクリックします。
- 「スタイル」ページでレポートのタイトルを入力し、「マトリックス」を選択して「次へ」をクリックします。
- 「データ・ソース」ページで、「SQL問合せ」をクリックし、「次へ」をクリックします。
- 「データ」ページの「データ・ソース定義」フィールドに次の
SELECT
文を入力します。
SELECT TO_CHAR (HIREDATE, 'YY') YEAR, DEPTNO, JOB,
SUM (SAL) FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YY'), DEPTNO, JOB
ORDER BY TO_CHAR(HIREDATE, 'YY'), DEPTNO, JOB
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
nested1b_code.txt からコードをコピーして、「データ・ソース定義」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「データ・ソース定義」フィールドにコードを入力します。
|
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第26.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 「行」ページで次の操作を行います。
- 「使用可能フィールド」リストの「YEAR」をクリックし、「>」ボタンをクリックしてこのフィールドを「マトリックス行フィールド」リストに移動します。「YEAR」が「レベル 1」の下に表示されます。
図26-2 レポート・ウィザードの最初のマトリックス行
画像の説明
- 「マトリックス行フィールド」リストで「レベル1」をクリックします。この手順によって、次の列が「レベル1」ではなく、確実に「レベル2」に追加されます。
- 「使用可能フィールド」リストの「DEPTNO」をクリックし、「>」ボタンをクリックしてこのフィールドを「マトリックス行フィールド」リストに移動します。列が「レベル1」ではなく、「レベル2」の下に追加されます。
図26-3 レポート・ウィザードの2番目のマトリックス行
画像の説明
- 「次へ」をクリックします。
- 「列」ページで、「JOB」をクリックし、「>」ボタンをクリックして、このフィールドを「マトリックス列フィールド」リストに移動します。「JOB」が「レベル1」の下に表示されたら、「次へ」をクリックします。
- 「セル」ページで、「SUM_SAL」をクリックし、「>」ボタンをクリックして、このフィールドを「マトリックス・セル・フィールド」リストに移動し、「次へ」をクリックします。
- 「合計」ページで「次へ」をクリックします。
- 「ラベル」ページで、ラベルとフィールド幅を次のように変更し、「次へ」をクリックします。
- 「テンプレート」ページの「事前定義テンプレート」で「Beige」を選択し、「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。表示は次のようになります。
図26-4 ネストしたマトリックス・レポートのペーパー・デザイン・ビュー
画像の説明
注意
位置合せと金額の書式設定をペーパー・デザイン・ビューで直接設定できます。項目をクリックし、該当するツールバー・ボタンをクリックします(カーソルをこれらのボタンの上に移動すると、ヒント・テキストが表示されます)。ペーパー・デザイン・ビューとオブジェクト・ナビゲータが並んで表示されている場合、どちらかで項目を選択すると、その選択がもう一方にも反映されます。
|
26.3 複数問合せマトリックスの作成
データ・モデルに複数の問合せが含まれるマトリックス・レポートを作成できます。複数問合せデータ・モデルは通常、単一問合せの場合よりも概念化やコードの作成が容易ですが、単一問合せデータ・モデルの方が一般にパフォーマンスが優れています。
26.3.1 手動での新規レポートの作成
この場合、データ・モデルとレイアウトを別々に作成した方が簡単です。したがって、まず空のレポートを作成してから、問合せを追加し、レイアウトを作成します。
空のレポートを作成するには:
- 「ファイル」→「新規」→「レポート」を選択します。
- 「新規レポートを手動で作成」を選択し、「OK」をクリックします。
26.3.2 クロス積とデータ・リンクを含むデータ・モデルの作成
複数の問合せを使用するマトリックス・レポートを作成する場合、最初にすべての問合せをデータ・ウィザードで作成して、次にデータ・モデル・ビューでクロス積グループと必要なリンクを作成する方が簡単です。
問合せを作成するには:
- データ・モデル・ビューで、「挿入」→「問合せ」を選択してデータ・ウィザードを表示します。
- 「ようこそ」ページが表示されたら、「次へ」をクリックします。
- 「問合せ」ページで、「問合せ名」にQ_Yearと入力し、「次へ」をクリックします。
- 「データ・ソース」ページで、「SQL問合せ」を選択し、「次へ」をクリックします。
- 「データ」ページの「データ・ソース定義」フィールドに次の
SELECT
文を入力します。
SELECT DISTINCT TO_CHAR (HIREDATE, 'YY') YEAR
FROM EMP
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
nested4b_code.txt からコードをコピーして、「データ・ソース定義」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「データ・ソース定義」フィールドにコードを入力します。
|
- 「次へ」をクリックします。
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第26.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 「グループ」ページで「次へ」をクリックします。
- 「終了」をクリックして、レポートのデータ・モデルをデータ・モデル・ビューに表示します。
- 前述の手順を2番目の問合せにも繰り返しますが、この場合、問合せ名は
Q_Dept
とし、次のSELECT
文を使用します。
SELECT DISTINCT DEPTNO
FROM EMP
注意
これらの問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
nested4b_code.txt からコードをコピーして、「データ・ソース定義」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「データ・ソース定義」フィールドにコードを入力します。
|
- また、3番目の問合せにも前述の手順を繰り返しますが、この場合、問合せ名は
Q_Job
とし、次のSELECT
文を使用します。
SELECT DISTINCT JOB
FROM EMP
- さらに、4番目の問合せにも前述の手順を繰り返し、問合せ名を
Q_Salary
として、次のSELECT
文を使用します。
SELECT TO_CHAR(HIREDATE, 'YY') YEAR, DEPTNO, JOB,
SUM(SAL) FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YY'), DEPTNO, JOB
ORDER BY TO_CHAR(HIREDATE, 'YY'), DEPTNO, JOB
図26-5 4つの問合せを持つデータ・モデル
画像の説明
ヒント
ここでは、問合せの順序が重要です。出力時にDEPTNOの値がYEARの値の中にネストされるようにするには、Q_DeptがQ_Yearの右または下に表示される必要があります。
|
クロス積グループを作成するには:
- データ・モデル・ビューで、ツール・パレットの「クロス積」ツールをクリックします。
- 「G_YEAR」、「G_DEPTNO」および「G_JOB」の周囲にボックスをドラッグします。マウス・ボタンを放すと、クロス積グループが作成されます。3つのグループが完全に囲まれていることを確認してください。
図26-6 4つの問合せとクロス積グループを持つデータ・モデル
画像の説明
データ・リンクを追加するには:
- データ・モデル・ビューで、ツール・パレットの「データ・リンク」ツールをクリックします。
- 「G_YEAR」グループの「YEAR」列をクリックし、「G_YEAR1」グループの「YEAR1」列までドラッグします。
- 手順1と2を繰り返しますが、今度はG_DEPTNOの「DEPTNO」列とG_YEAR1の「DEPTNO1」列の間でリンクをドラッグします。
- さらに、手順1と2を繰り返しますが、今度はG_JOBの「JOB」列とG_YEAR1の「JOB1」列の間でリンクをドラッグします。
図26-7 ネストしたマトリックスのデータ・モデル
画像の説明
- データ・モデル・オブジェクトを移動して、上の図のようにすると、見やすくなります。
26.3.3 レポート・ウィザードによるレイアウトの作成
データ・モデルが完成したら、レポート出力で表示するデータ・オブジェクトのレイアウトを作成する必要があります。
レイアウトを作成するには:
- データ・モデル・ビューで、キャンバスを右クリックして「レポート・ウィザード」を選択します。
- レポート・ウィザードの「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択します。
- 「スタイル」ページで、「マトリックス」を選択します。
- 「グループ」ページで、データ・モデルのグループがすべて「表示グループ」リストに表示されていることを確認します。G_1は「マトリックス」、G_YEARおよびG_DEPTNOは「下」、G_JOBは「右」、G_YEAR1は「下」になっています。
図26-8 レポート・ウィザードの「グループ」ページ
画像の説明
- 「フィールド」ページで、「表示フィールド」リストに次の列のみが表示されていることを確認します。
- YEAR
- DEPTNO
- JOB
- SUM_SAL
図26-9 レポート・ウィザードの「フィールド」ページ
画像の説明
- 「ラベル」ページで、ラベルとフィールド幅を次のように変更します。
- 「テンプレート」ページの「事前定義テンプレート」で「Beige」を選択し、「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。表示は次のようになります。
図26-10 ネストしたマトリックス出力のペーパー・デザイン・ビュー
画像の説明
26.4 ブレークを含む複数問合せマトリックスの作成
図26-4「ネストしたマトリックス・レポートのペーパー・デザイン・ビュー」の単一問合せのネストしたマトリックス出力と、図26-10「ネストしたマトリックス出力のペーパー・デザイン・ビュー」の複数問合せの出力を比較すると、複数問合せの場合にはどの年度にもすべての部門が表示されるのに対し、単一問合せの場合はそうではないことがわかります。単一問合せの場合、マトリックス・セルに実際に値がある部門のみが出力に表示されます。複数問合せで同様の結果を得るには、YEARとDEPTNOを含むグループの間に親子リレーションシップを設定する必要があります。
26.4.1 手動での新規レポートの作成
この場合、データ・モデルとレイアウトを別々に作成した方が簡単です。したがって、まず空のレポートを作成してから、問合せを追加し、レイアウトを作成します。
空のレポートを作成するには:
- 「ファイル」→「新規」→「レポート」を選択します。
- 「新規レポートを手動で作成」を選択し、「OK」をクリックします。
26.4.2 クロス積とデータ・リンクを含むデータ・モデルの作成
複数の問合せを使用するマトリックス・レポートを作成する場合、最初にすべての問合せをデータ・ウィザードで作成して、次にデータ・モデル・ビューでクロス積グループと必要なリンクを作成する方が簡単です。
問合せを作成するには:
- データ・モデル・ビューで、「挿入」→「問合せ」を選択してデータ・ウィザードを表示します。
- 「ようこそ」ページが表示されたら、「次へ」をクリックします。
- 「問合せ」ページで、「問合せ名」に
Q_Dept
と入力し、「次へ」をクリックします。
- 「データ・ソース」ページで、「SQL問合せ」を選択し、「次へ」をクリックします。
- 「データ」ページの「データ・ソース定義」フィールドに次の
SELECT
文を入力します。
SELECT TO_CHAR(HIREDATE, 'YY') YEAR, DEPTNO
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YY'), DEPTNO
ORDER BY TO_CHAR(HIREDATE, 'YY'), DEPTNO
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
nested3b_brk_code.txt からコードをコピーして、「データ・ソース定義」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「データ・ソース定義」フィールドにコードを入力します。
|
- 「次へ」をクリックします。
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第26.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 「グループ」ページで、「使用可能フィールド」リストの「YEAR」をクリックし、「>」ボタンをクリックして、このフィールドを「グループ・フィールド」リストに移動し、「次へ」をクリックします。
- 「合計」ページで「次へ」をクリックします。
- 「終了」をクリックして、レポート出力のデータ・モデルをデータ・モデル・ビューに表示します。
- 「挿入」→「問合せ」を選択し、前述の手順に従って、
Q_Job
という名前の別の問合せを作成し、次のSELECT
文を使用します。
SELECT DISTINCT JOB
FROM EMP
- さらに、「挿入」→「問合せ」を選択し、前述の手順に従って、
Q_Salary
という名前の3番目の問合せを作成し、次のSELECT
文を使用します。
SELECT TO_CHAR(HIREDATE, 'YY') YEAR, DEPTNO, JOB,
SUM(SAL) FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YY'), DEPTNO, JOB
ORDER BY TO_CHAR(HIREDATE, 'YY'), DEPTNO, JOB
図26-11 3つの問合せを持つデータ・モデル
画像の説明
クロス積グループを作成するには:
- データ・モデル・ビューで、ツール・パレットの「クロス積」ツールをクリックします。
- G_YEAR、G_DEPTNOおよびG_JOBの周囲にボックスをドラッグします。マウス・ボタンを放すと、クロス積グループが作成されます。3つのグループが完全に囲まれていることを確認してください。
図26-12 3つの問合せとクロス積グループを持つデータ・モデル
画像の説明
データ・リンクを追加するには:
- データ・モデル・ビューで、ツール・パレットの「データ・リンク」ツールをクリックします。
- 「G_YEAR」グループの「YEAR」列をクリックし、「G_YEAR1」グループの「YEAR1」列までドラッグします。
- 手順1と2を繰り返しますが、今度は「G_DEPTNO」の「DEPTNO」列と「G_YEAR1」の「DEPTNO1」列の間でリンクをドラッグします。
- さらに、手順1と2を繰り返しますが、今度は「G_JOB」の「JOB」列と「G_YEAR1」の「JOB1」列の間でリンクをドラッグします。
図26-13 ネストしたマトリックスのデータ・モデル
画像の説明
- データ・モデル・オブジェクトを移動して、上の図のようにすると、見やすくなります。
26.4.3 レポート・ウィザードによるレイアウトの作成
データ・モデルが完成したら、レポート出力で表示するデータ・オブジェクトのレイアウトを作成する必要があります。
レイアウトを作成するには:
- データ・モデル・ビューで、キャンバスを右クリックして「レポート・ウィザード」を選択します。
- レポート・ウィザードの「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択します。
- 「スタイル」ページで、「マトリックス」を選択します。
- 「グループ」ページで、データ・モデルのグループがすべて「表示グループ」リストに表示されていることを確認します。「G_1」は「マトリックス」、「G_YEAR」および「G_DEPTNO」は「下」、「G_JOB」は「右」、「G_YEAR1」は「下」になっています。
図26-14 レポート・ウィザードの「グループ」ページ
画像の説明
- 「フィールド」ページで、「表示フィールド」リストに次の列のみが表示されていることを確認します。
- YEAR
- DEPTNO
- JOB
- SUM_SAL
図26-15 レポート・ウィザードの「フィールド」ページ
画像の説明
- 「ラベル」ページで、ラベルとフィールド幅を次のように変更します。
- 「テンプレート」ページの「事前定義テンプレート」で「Beige」を選択し、「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。表示は次のようになります。
図26-16 ネストしたマトリックス・レポートの最終出力のペーパー・デザイン・ビュー
画像の説明
26.5 金額の書式設定
マトリックス・レポートをさらに読みやすくするには、金額の書式を設定する必要があります。
金額の書式を設定するには:
- レポートの最初のページで、セルの値のいずれかをクリックします。すべての値が選択されるので、それらのプロパティを同時に変更できます。
- ツールバーの「通貨」ボタンをクリックします。すべての値の横に通貨記号が表示されます。
- ツールバーの「10進桁を追加」ボタンを2回クリックします。小数点の右側に少数点以下2桁が追加されます。
- フィールドのサイズを変更します。「SALESMAN」ラベルの下でセルの値の一番右側にあるハンドルをクリックし、そのまま左へ約0.5インチ(1.5 cm)ドラッグします。この操作を完了すると、部門サマリーが2ページ目から1ページ目へ移動します。
- [Shift]を押しながら「SALESMAN」ラベルをクリックします。
- ツールバーの「右に整列」ボタンをクリックします。
- ペーパー・デザイン・ビューの空き領域をクリックして、すべてのオブジェクトの選択を解除します。
図26-17 書式設定された金額を含む、ネストしたマトリックス・レポートの出力
画像の説明
- レポートを
nested4b_brk_<自分のイニシャル>.rdf
という名前で保存します。
26.6 まとめ
これで、すべての作業が完了しました。3つのネストしたマトリックス・レポートが正常に作成されました。この章で学習した内容は次のとおりです。
- 単一問合せデータ・モデルを使用して、ネストしたマトリックス・レポートを作成する。
- 複数問合せデータ・モデルを使用して、ネストしたマトリックス・レポートを作成する。
- 複数の問合せとクロス積グループ内のブレークを使用して、ネストしたマトリックス・レポートを作成する。
- 金額の書式を設定する。
この例で使用されているウィザード、ビュー、プロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照してください。このヘルプは、第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」で説明しているとおり、Reports BuilderまたはOracle Technology Network(OTN)から表示できます。