ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

REPORT

REPORTコマンドは、1つ以上のデータ式のレポートを書式付きで生成するコマンドです。REPORTは、式のディメンションに対して自動的にループ処理します。結果は現行の出力ファイルに送信されます。

構文

REPORT [NOHEAD] [GRANDTOTALS] [[SUBTOTALS] {GROUP group-dimension}...] - 

     [[SUBTOTALS] [attributes] DOWN down-dimension] -

     [[ROWTOTALS] { ACROSS across- dimension [limit-clause]: }... ] -

     [SUBTOTALS] [attributesexpression(s)

パラメータ

expression引数のみを指定した場合、REPORTは、「デフォルトのレイアウト」に説明するレイアウトを使用してレポートを生成します。GROUP、DOWNまたはACROSS句に式のディメンションのいくつか(すべてではない)を指定すると、指定されないディメンションを持つデフォルトのレイアウトに可能なかぎり近いレイアウトになります。

NOHEAD

レポートに初期空白行およびヘッダーが含まれないことを指定します。NOHEADは、attributes引数で指定したすべてのHEADING引数より優先され、REPORTコマンドが通常自動的に生成するすべてのヘッダーを非表示にします。

GRANDTOTALS

数値列ごとの総計をレポートの末尾に挿入します。

SUBTOTALS

数値列の小計を挿入します。小計の各行の上にはダッシュの列が挿入されます。式またはDOWN句に対してSUBTOTALSを指定すると、GROUPディメンション(またはコンポジット)ごとの小計が得られます。GROUP句に対してSUBTOTALSを指定すると、指定したディメンションおよび変化の遅いGROUPディメンションの小計が得られます。グループの小計はグループの最後のスライスの下部に表示されます。

GROUP

group-dimensionの値ごとに、データの個別group、つまり2次元スライスを生成します。GROUP句を複数回使用すると、複数のGROUPディメンション(またはコンポジット)を指定できます。この場合、GROUPディメンションの値の組合せごとに異なるスライスが生成されます。

group-dimension

グループ・ラベルとして使用する値の取得元のディメンションまたはコンポジットの名前。または、グループ・ラベルとして使用する実際の値である1つ以上のTEXT式。

  • group-dimensionにコンポジットまたは結合ディメンションの名前を指定すると、各ベース・ディメンションに別々のグループが作成されます。

  • group-dimensionTEXT式を指定する場合、その式は、目的のGROUPディメンションのみによってディメンション化される必要があり、式の各値は、関連ディメンション値に対応する説明テキストにする必要があります。

GROUP句に指定したディメンションは、それらがループ処理するデータに関連する必要はありません。「追加ディメンションの指定」を参照してください。

DOWN

行のラベル、つまり、レポートの左側に、その他の値をラベル付けする1つ以上の列が含まれるように指定します。使用できるDOWN句は1つのみです。

down-dimension

行のラベルとして使用する値の取得元のディメンションまたはコンポジットの名前。または、行のラベルとして使用する実際の値である1つ以上のTEXT式。

  • down-dimensionに非結合ディメンションの名前を指定すると、行のラベルとして1列のみ生成されます。

  • down-dimensionにコンポジットまたは結合ディメンションの名前を指定すると、各ベース・ディメンションに別々の列が作成されます。

  • down-dimensionTEXT式を指定する場合、その式は、目的のDOWNディメンションのみによってディメンション化される必要があり、式の各値は、関連ディメンション値に対応する説明テキストにする必要があります。

DOWN句に指定したディメンションは、それらがループ処理するデータに関連する必要はありません。「追加ディメンションの指定」を参照してください。

ROWTOTALS

「TOTAL」のヘッダーの列を、数値行ごとの合計とともにレポートの右側に挿入します。レポートに行の合計を挿入するのは、列の小計または総計を挿入するのと異なります。

ACROSS

列ヘッダーの行をレポート上部にdimensionの値ごとに生成します。各ヘッダーの下には、指定したデータ式のためのデータの列がREPORTによって生成されます。レポートには、複数のACROSS句(またはコンポジット)を入れることができます。

across-dimension

列ヘッダーとして使用する値の取得元のディメンションまたはコンポジットの名前。または、列ヘッダーとして使用する実際の値である1つ以上のTEXT式。

  • across-dimensionにコンポジットまたは結合ディメンションの名前を指定すると、各ベース・ディメンションに別々のヘッダー列が作成されます。

  • across-dimensionにTEXT式を指定する場合、その式は、目的のacross-dimensionのみによってディメンション化される必要があり、式の各値は、関連ディメンション値に対応する説明テキストにする必要があります。DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションに対する書式設定済ラベルの指定の詳細は、「DAY、WEEK、MONTH、QUARTERおよびYEARのディメンション値の書式設定」を参照してください。

ACROSS句に指定したディメンションは、それらがループ処理するデータに関連する必要はありません。「追加ディメンションの指定」を参照してください。

limit-clause

REPORT文の実行時のディメンションの一時的なステータス。ACROSS句にディメンションを指定する場合に使用します。(ACROSS句にコンポジットを指定する場合、limit-clause引数を含めることはできません。)

limit-clauseの構文は、各種LIMITコマンドにおけるlimit-clause引数の構文(つまり、LIMITコマンドの「TO」などのlimit-type引数の後の構文)と同じです。これらの引数の構文については、LIMITコマンド(値を使用)LIMITコマンド(LEVELRELを使用)LIMIT(親リレーションを使用)LIMITコマンド(関連ディメンションを使用)LIMITコマンド(NOCONVERTを使用)およびLIMITコマンド(POSLISTを使用)を参照してください。

指定した制限による結果としてディメンションが空のステータスになると、OKNULLSTATUSオプションの設定に関係なくエラーが発生します。ただし、IFNONE label句を指定すると、エラーは表示されずにプログラムの実行は指定のラベルに分岐するため、ここでエラーに対処できます。

attributes

データの書式設定の方法を指定する表10-4「レポートのデータ値の書式属性」に示す1つ以上の書式属性。DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションに対する書式設定済ラベルの指定の詳細は、「DAY、WEEK、MONTH、QUARTERおよびYEARのディメンション値の書式設定」を参照してください。


ヒント:

変数の定義に属する書式設定プロパティが変数に存在する場合、OBJファンクションを使用してこのプロパティの値を取得し、これをREPORT文の属性の値として使用できます。

属性を指定しなかった場合、データ値の書式設定には、「デフォルトのレイアウト」に説明するデフォルトの書式が使用されます。この場合、Oracle OLAPでは、列の幅、小数点以下の桁数、数値の3桁区切りにカンマを使用するかどうかなどが自動的に決定されます。

表10-4 レポートのデータ値の書式属性

属性 意味

HEADING 'text'

デフォルトの列ヘッダーのかわりに使用するテキストを指定。HEADING属性を使用する場合、指定するヘッダーの位置は、レポート内でこの属性の適用が必要な式の数に応じて変わる。つまり、指定のヘッダーは、デフォルトのヘッダーを置き換える場合とそうでない場合がある。また、HEADING属性を使用して列幅より広い列タイトルを指定すると、タイトルのテキストは、その列の幅の範囲内で折り返される。

WIDTH n

(省略形はW。)列の幅を空白n個分にする。最大幅は4,000文字。幅が0(ゼロ)の列は表示されない。(「Width属性のデフォルト値」も参照。)

TRUNCATE

(省略形はTRUNC。)文字値が列に収まらない場合、文字値を列幅に合せて切り捨てる。

NOTRUNCATE

(省略形はNOTRUNC)文字値が列に収まらない場合、追加の行を生成。(デフォルト)

CENTER

(省略形はC。)列内で値を中央揃え。

LEFT

(省略形はL。)列内で値を左揃え。(テキスト・データのデフォルト。)

RIGHT

(省略形はR。)列内で値を右揃え。(数値データおよびブール・データのデフォルト。)

SPACE n

(省略形はSP。)指定した数の空白を列の前に挿入。

(デフォルトで、最初の列の前には0個の空白が挿入され、残りの列の前には1個の空白が挿入される。)

FILL 'char'

列の未使用の位置にcharを置く。(デフォルトの埋込み文字は空白。)

COMMA

カンマ、またはTHOUSANDSCHARオプションに現在記録されている文字で、3桁および6桁を区切る。COMMASオプションの設定に優先。

NOCOMMA

3桁および6桁を文字で区切らない。COMMASオプションの設定に優先。

PAREN

カッコを使用して負の数を表す。PARENSオプションの設定に優先。

NOPAREN

マイナス符号を使用して負の数を表す。PARENSオプションの設定に優先。

DECIMAL n

(省略形はD)小数桁をn桁表示。小数桁は、DECIMALCHARオプションに現在記録されている文字で区切られる。DECIMALSオプションの値に優先。

注意: REPORTでは、合計の式に対してDECIMAL属性を指定しないかぎり、整数データの行合計や列合計での小数点以下の桁は非表示になる。また、DECIMAL属性を0に設定し、NOLEADINGZEROキーワードを使用すると、0に丸められる-1から1までの小数値は表示されない。

MDECIMAL n

M表記法で書式化された値の小数点以下の桁をn桁まで表示。nの値は0から16または255。

NODECIMAL

DECIMALSオプションの設定で指示された小数桁の桁数を表示。(デフォルト)

EDECIMAL n

E表記法で書式化された値の小数点以下の桁をn桁まで表示。nの値は0から16または255。

ENOTATION

指数表記法またはE表記法とも呼ばれる科学表記法を使用(値の後にEを、指数の前に符号を付加。たとえば、.230E+2.230E-2など)。

NOENOTATION

E表記法を使用しない。かわりに、条件付きのM表記法を使用。

CENOTATION

値が列の中に収まるために必要な場合、条件付きでE表記法を使用。

MNOTATION

常にM表記法を使用(百万で除算した値にMを付加)。

NOMNOTATION

M表記法を使用しない。かわりに、サイズの大きすぎる値にはアスタリスクを使用。

CMNOTATION

値が列の中に収まるために必要な場合、条件付きでM表記法を使用。(デフォルト)

FOLDDOWN

複数行の文字値の場合、最初の行を他の値と並べて表示し、それ以外の行をその下に配置。また、先行または後続の空白を削除。(デフォルト)

FOLDUP

複数行の文字値の場合、最後の行のみを他の値と並べて表示し、それ以外の行は上部に配置。また、先行または後続の空白を削除。

INDENT n

列内で、値を空白n個分インデント。デフォルトは0。

LEADINGZERO

-1から1までの小数部の前にゼロを付加。

NOLEADINGZERO

-1から1までの小数部の前のゼロを非表示にする。

CNLEADINGZERO

有効桁を切り捨てない場合、-1から1までの小数部の前にゼロを付加。(デフォルト)

LSET 'text'

textを値の左側に追加。NA値を含む式とともにLSETを使用すると、LSETで指定したテキストは、NA値の左側に挿入されない。

NOLSET

値の左側に何も追加しない。(デフォルト)

RSET 'text'

textを値の右側に追加。NA値を含む式とともにRSETを使用すると、RSETで指定したテキストは、NA値の右側に挿入されない。

NORSET

値の右側に何も追加しない。(デフォルト)

NASPELL 'text'

NA値のかわりにtextを使用。NASPELLオプションの設定に優先。

NONASPELL

NASPELLオプションに指定した内容でNA値を表示。(デフォルト)

YESSPELL 'text'

TRUEブール値としてtextを使用。デフォルト値はYESSPELLオプションで記録。

NOSPELL 'text'

FALSEブール値としてtextを使用。NOSPELLオプションの設定に優先。

ZSPELL 'text'

ゼロの数値のかわりにtextを使用。ZSPELLオプションの設定に優先。

NOZSPELL

ZSPELLオプションで指定した内容でゼロ数値を表示。(デフォルト)

OVER textexp

文字式(textexp)の値を持つ値に上線を引く。textexpがリテラル値の場合は、一重引用符で囲まなければならない。有効なリテラル値は、値または列に上線を引く'-'、値または列に二重上線を引く'='、値または列に上線を引かないことを指定する''

条件が一致した場合にのみ上線を引くには、textexpに次の文を使用する。

IF boolean-expression THEN '-' ELSE ''

UNDER textexp

文字式(textexp)の値を持つ値に下線を引く。textexpがリテラル値の場合は、一重引用符で囲まなければならない。有効なリテラル値は、値または列に下線を引く'-'、値または列に二重下線を引く'='、値または列に下線を引かないことを指定する''

条件を満たした場合にのみ下線を引くには、textexpに次の文を使用する。IF boolean-expression THEN '-' ELSE ''

VALONLY

UNDERおよびOVER属性とともに使用し、値に対してのみ下線または上線を引く。

NOVALONLY

UNDERおよびOVER属性とともに使用し、列の幅全体に下線または上線を引く。(デフォルト)


expression . . .

レポートに表示されるデータ。データの表示は、そのデータ型と指定した属性に依存します。


注意:

REPORTコマンドにはNTEXT値を処理する機能はありません。NTEXT値は、レポートのどの部分にも使用しないでください。

複数の式を指定できます。それらの式が同じディメンションを持つ必要はありません。

  • REPORT文に複数のデータ式がある場合、それぞれの前に異なる書式を指定できます。属性を2つ以上のデータ式に適用する場合、式を山カッコ(< >)で囲みます。

    attributes <expression1expression2>

  • カッコの外側の属性が、カッコの内側のすべての式に適用されます。ただし、カッコ内にある1つの式にのみ対してその直前に属性を指定すれば、グループに適用される属性と矛盾する属性の場合でも、その式のみに別の属性を指定することもできます。

    attributes0 <attributes1 expression1expression2>

    この場合、attributes0expression1expression2の両方に適用されますが、attributes1expression1にのみ適用されます。


ヒント:

現在までの合計を作成するには、RUNTOTALファンクションを使用します。

使用上の注意

レポートのオプション

OLAP DMLを使用して作成されるレポートには、複数のオプションによる効果が適用されます。これらのオプションは、「レポートのオプション」に記載されています。

デフォルトのレイアウト

どのレイアウト句(GROUP、DOWNまたはACROSS)も指定しない場合、REPORTではコンパクトな書式で出力されます(通常は、一方のディメンションがサイドを上下に沿い、他方のディメンションが上部を左右に沿う、スプレッドシートに似た2次元のデータ・レポートです)。データのディメンションを追加した場合は、一連のスプレッドシートのように、スライス、つまり異なる2次元のセグメントが形成されます。デフォルトでは、次のルールが適用されてレイアウトが決まります。

  • 式の中で最も変化の速いディメンション(その式の定義のうちで先頭に置かれているディメンション)は横方向に表示され、次に変化するディメンションは縦方向に表示されます。それ以降に変化するディメンションはGROUPスライスになります。

  • 2つ以上の式のリストにおけるディメンションの順序は、コンポーネント式の定義に記述されているディメンションの単純な組合せです。元の順序が可能なかぎり保持されますが、同じディメンションが繰り返し記述されている場合は削除されるというルールに従います。たとえば、変数priceがディメンション<month product>を持ち、変数industry.salesがディメンション<quarter product region>を持つ場合、priceindustry.salesの組合せのディメンションは<month product quarter region>です。

コンポジットによってディメンション化される変数についてデータのレポートを作成すると、REPORTは、変数の定義に使用されているコンポジットのベース・ディメンション別に、データを自動的に取り出します。ベース・ディメンション値の特定の組合せがコンポジットに存在しない場合、レポートには、これに対応するデータ・セルに対してNAが表示されます。例10-104「コンポジットによってディメンション化されたデータのレポート」を参照してください。

Width属性のデフォルト値

ACROSS句でWIDTH属性を指定しない場合、デフォルトの幅はCOLWIDTHオプションの値となります(デフォルトは10)。

DOWN句でWIDTH属性を指定しない場合、またはDOWN句で単純なディメンションを指定した場合、デフォルトの幅はLCOLWIDTHオプションの値となります(デフォルトは14)。

結合ディメンションまたはコンポジットを指定するDOWN句でWIDTH属性を指定しない場合、デフォルトのラベル幅はCOLWIDTHオプションの幅となり、各ベース・ディメンションに別個の列が生成されます。KEYファンクションを使用すると、ベース・ディメンション列ごとに異なる幅を設定できます。KEYファンクションによって、ベース・ディメンションごとにラベル列を生成し、列ごとに異なるWIDTH属性を使用できます。たとえば、ベース・ディメンションproductおよびdistrictを持つproddistという名前のコンポジットがあるとします。この場合、次のような文を使用できます。

REPORT DOWN < W 8 KEY(proddist, product) -
   W 12 KEY(proddist, district) > . . .

デフォルトの行幅である80文字(LSIZEオプションで指定)およびデフォルトの列幅設定(14文字のラベル列が1つ)を使用すると、出力の1行にはラベル列と6つのデータ列が収まります。

レポートのすべての列を合せた幅は、4,000文字を超えることはできません。

数値が大きすぎてデータ列に収まらない場合、数値は百万の位に四捨五入され、セルの右側に記号Mが付きます。この処理をしても値が大きすぎる場合、値は1列のアスタリスクに置き換えられます。

DAY、WEEK、MONTH、QUARTERおよびYEARのディメンション値の書式設定

DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションをACROSS、DOWNまたはGROUP句のdimensionとして使用した場合、CONVERTファンクションを使用してディメンションのVNF(またはデフォルトのVNF)を変更し、ディメンション値の名前に独自の書式を適用できます。VNFを変更するには、ACROSS、DOWNまたはGROUPキーワードに対して、dimension引数のかわりにvnf引数を指定してCONVERTファンクションを使用します。たとえば、unitsデータのレポートでは、次の文を使用してmonthディメンションのラベルを書式設定できます。

REPORT HEADING 'Month' DOWN -
   CONVERT(month TEXT '<mtextl> <yyyy>') units

追加ディメンションの指定

REPORTコマンドは、表示される式がどのディメンションによってディメンション化されるかにかかわらず、レポートのレイアウトで指定したすべてのディメンションを使用します。式が指定された1つ以上のディメンションによってディメンション化されない場合、その式の値は追加のディメンションの値ごとに繰り返されます。比較の際に効果があることがあります。例10-103「価格データの繰返し」を参照してください。

例10-100 デフォルトのレポートの作成

この例は、1996年の最初の3か月間の製品価格を参照する方法を示します。デフォルトのレイアウトを変更することなく、最も簡単な形式のREPORTを使用します。

LIMIT month TO 'Jan96' TO 'Mar96'
REPORT price

これらの文によって生成される出力は次のとおりです。

                --------------PRICE-------------
                --------------MONTH-------------
PRODUCT           Jan96       Feb96      Mar96
--------------- ---------- ---------- ----------
Tents               165.50     165.75     165.13
Canoes              200.25     200.09     200.05
Racquets             55.02      55.03      55.00
Sportswear           50.03      50.02      50.00
Footwear             38.01      38.01      38.01

例10-101 列合計の追加

この例は、1996年前半における3つの地区の売上数量を表示し、レポートの横方向にdistrictを示し、列ごとに小計を示します。(デフォルトでは、レポートの横方向には月が並べられますが、これは、monthunitsの最も変化の速いディメンションであるためです。)レポートをよりコンパクトにするため、狭い列幅として8文字を指定します。

LIMIT month TO 'Jan96' TO 'Jun96'
LIMIT district TO 'Boston' 'Chicago' 'Dallas'
REPORT SUBTOTALS W 8 DOWN month -
   ACROSS district: W 8 units

これらの文によって生成される出力は次のとおりです。

PRODUCT: TENTS
         ----------UNITS-----------
         ---------DISTRICT---------
MONTH    Boston   Chicago  Dallas
-------- -------- -------- --------
Jan96         307      189      308
Feb96         209      190      324
Mar96         277      257      436
Apr96         372      318      560
May96         525      433      744
Jun96         576      466      838
-------- -------- -------- --------
TOTAL       2,266    1,853    3,210
   ...

REPORTでは、製品ごとに同様なスライスを生成できます。

例10-102 2つの変数の比較

この例は、スポーツウェア販売実績と販売計画予測とを比較し、ドル単位の整数値のみで示します。1996年5月および6月の実績と予測値を横に並べてレポートし、すべての地区の販売実績と販売予測の総計を表示します。

LIMIT product TO 'Sportswear'
LIMIT month TO 'May96' 'Jun96'
LIMIT district TO ALL
REPORT GRANDTOTALS W 12 DOWN district ACROSS month: -
   DECIMAL 0 <sales sales.plan>

これらの文によって生成される出力は次のとおりです。

PRODUCT: SPORTSWEAR
             -------------------MONTH-------------------
             --------May96-------- --------Jun96--------
DISTRICT       SALES    SALES.PLAN   SALES    SALES.PLAN
------------ ---------- ---------- ---------- ----------
Boston           72,617     69,623     79,630     73,569
Atlanta         161,537    148,823    177,967    157,939
Chicago         101,873     94,545    112,793     97,427
Dallas          170,939    165,449    175,066    164,192
Denver           89,971     91,880     97,237     94,729
Seattle          57,713     55,905     60,323     56,808
             ---------- ---------- ---------- ----------
                654,651    626,224    703,017    644,664
             ========== ========== ========== ==========

例10-103 価格データの繰返し

この例は、3つの地区にわたる販売実績を比較し、各地区で綿密な比較ができるように販売数量の横にそれぞれ単価を表示します。REPORT文では、2つの式(salesおよびprice)を指定します。salesには3つのディメンション(monthproductおよびdistrict)があるため、レポートにはこれら3つのディメンションを表示します。ただし、pricedistrictによってディメンション化されません。したがって、レポートはdistrictごとにpriceの値を繰り返します。1995年1月のレポートを表示します。

LIMIT district TO FIRST 3
LIMIT product TO ALL
LIMIT month TO 'Jan95'
REPORT GROUP month W 10 DOWN product ACROSS district: -
   <W 9 sales W 6 price>

これらの文によって生成される出力は次のとおりです。

MONTH: Jan95
           -------------------DISTRICT------------------------
           -----Boston-----  ----Atlanta----- -----Chicago----
PRODUCT      SALES    PRICE   SALES    PRICE   SALES    PRICE 
---------- --------- ------  --------- ------ --------- ------
Tents      32,153.52 160.77  40,674.20 160.77 29,098.94 160.77
Canoes     66,013.92 190.24  49,462.88 190.24 45,277.56 190.24
Racquets   52,420.86  52.84  54,798.82  52.84 54,270.39  52.84
Sportswear 53,194.70  48.54 114,446.26  48.54 72,123.47  48.54
Footwear   91,406.82  36.10 100,540.28  36.10 90,287.70  36.10

例10-104 コンポジットによってディメンション化されたデータのレポート

この例では、d.salesは、ディメンション・リストにディメンションmonthおよび名前のないコンポジットSPARSE <product district>が含まれる変数です。名前のないコンポジットには、BostonChicagoの各地区、およびTentsRacquetsFootwearの各製品に対するベース・ディメンションの組合せについて値が存在しません。REPORTコマンドのデフォルトの形式を使用してd.salesデータのレポートを生成すると、month別および名前のないコンポジットのベース・ディメンション(productおよびdistrict)別にレポートが出力されます。コンポジットに存在しないベース・ディメンション値の組合せの場合、レポートではこれに対応するデータ・セルにNAが表示されます。

LIMIT month TO 'Jan96' TO 'Mar96'
LIMIT district TO 'Boston' 'Chicago'
REPORT d.sales

これらの文によって生成される出力は次のとおりです。

DISTRICT: Boston
               ------------D.SALES-------------
               -------------MONTH--------------
PRODUCT          Jan96      Feb96      Mar96
-------------- ---------- ---------- ----------
Tents                  NA         NA         NA
Canoes             70,489     82,238     97,622
Racquets               NA         NA         NA
Sportswear         57,079     63,122     67,006
Footwear               NA         NA         NA
 
DISTRICT: Chicago
               ------------D.SALES-------------
               -------------MONTH--------------
PRODUCT          Jan96      Feb96      Mar96
-------------- ---------- ---------- ----------
Tents                  NA         NA         NA
Canoes             48,662     54,425     68,816
Racquets               NA         NA         NA
Sportswear         77,490     85,879     85,308
Footwear               NA         NA         NA

GROUP、DOWNまたはACROSS句にコンポジットを指定すると、REPORTのデフォルトの書式を無効にし、d.salesデータをそのコンポジット別に取り出すことができます。この場合、レポートの内容はコンポジットに値が格納されているデータ・セルのみになります。

REPORT DOWN SPARSE <product district> d.sales

この文によって生成されるレポートは、次のとおりです。

                      ------------D.SALES-------------
                      -------------MONTH--------------
 PRODUCT    DISTRICT    Jan96      Feb96      Mar96
---------- ---------- ---------- ---------- ----------
Canoes     Boston         70,489     82,238     97,622
Sportswear Boston         57,079     63,122     67,006
Canoes     Chicago        48,662     54,425     68,816
Sportswear Chicago        77,490     85,879     85,308