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

前
 
次
 

ROWコマンド

ROWコマンドは、単一の行のセルに一連のデータを連続して生成するコマンドです。一連のROWコマンドは、対応するセルをそれぞれ生成し、これによりデータの列が作成されます。このため、通常、ROWコマンドは一連の列を生成するコマンドと言えます。ROWコマンドによる出力は、現行の出力ファイルに送信されます。

一般にROWコマンドは、レポート書込み文としてまとめて考えることができる他のコマンド、ファンクションおよびオプションとともに使用されます。

ROWコマンドは、生成するデータおよびデータの出力書式(オプション)を指定する一連の列説明で構成されます。

さらに、ROWには行および列の計算を実行するための幅広い機能があります。計算を実行して計算結果を出力に含めることができます。あらゆる種類の計算式を列説明で使用でき、行および列の合計ファンクションを利用できます(表10-6「行と列の計算」を参照)。

ROWは、主にレポート・プログラムで使用してレポートの行を生成します。レポートにおける行の最大幅は4,000文字です。


ヒント:

ROWコマンドの小計機能を必要としないことが前もって明らかな場合、ROWコマンドのかわりにHEADING文を使用してレポートの行を生成すると、この場合、Oracle OLAPは小計を管理しないので時間を節約できます。

構文

ROW [attributes] [ACROSS dimension [limit-clause]:] {exp1|SKIP } -

     [[attributes] [ACROSS dimension [limit-clause]:] {expn|SKIP }]

パラメータ

引数を持たないROWは、空白行を生成します。

attributes

列に関する1つ以上の属性。属性とは、列内でデータ値を書式化する方法を決定する書式指定です。列書式の記述に使用できる属性の数に制限はありません(使用できる属性については、 表10-5「ROWの列属性」 を参照)。(使用できる属性については、表10-5「ROWの列属性」を参照。)一部の書式属性のデフォルトは、Oracle OLAPオプションの現在の設定に依存しています(これらのオプションのリストについては、表10-7「レポート関連のオプション」を参照)。

ACROSS

ACROSS句では、式の1つのディメンション(またはコンポジット)をループし、ディメンション化された式の複数の値を単一行に挿入します。通常のROWは、現在の制限内で最初のディメンション値に対応する値を表示するのみです。ACROSS句を使用すると、ROWは現在ステータスにある各ディメンション値について1つのデータ列を生成します。

複数のデータ式に同じACROSS句を適用することも、異なるデータ式ごとに別のACROSS句を適用することもできます。「複数式」および「個別のACROSS句」を参照してください。

dimension

文をループさせるディメンションまたはコンポジットの名前。

コンポジットでディメンション化された変数のデータを表示するときにACROSS句を含めない場合、ROWはコンポジットのベース・ディメンション値に対応するすべてのデータ・セルの出力を表示します。ベース・ディメンション値の特定の組合せがコンポジットに存在しない場合、ROWは、対応するデータ・セルにNAを表示します。同様に、ACROSS句で1つのコンポジットのベース・ディメンションを指定すると、コンポジットに値が存在しないデータ・セルにNAを表示します。ただし、ACROSS句でコンポジットを指定すると、ROWはコンポジットにベース・ディメンション値の組合せが存在するデータ・セルにのみ出力を表示しますが、この場合、データをより的確に反映する簡潔なレポートが生成されます。

ACROSS句で指定されたディメンションがNULLステータスである場合、ROWはそのACROSS句に対してデータ列を生成しません。

limit-clause

ACROSS句でディメンションを指定する場合は、この句を使用すると、ROW文を実行している間、そのディメンションのステータスを一時的に変更できます。

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

次の例は、月の現行のステータスに関係なく、一時的に月を最新の6つの値に制限します。

      ACROSS month LAST 6: units

指定する制限によってディメンションのステータスが空になる場合は、エラーが発生します。ただし、IFNONE label句が含まれている場合、エラーが表示されずにプログラムの実行は指定されたラベルに分岐するため、ここでエラーを処理できます。


注意:

ACROSS句でコンポジットを指定する場合、limit-clause引数を含めることはできません。ROW文を実行する前に、LIMITコマンドでコンポジットのベース・ディメンションを目的の値に制限する必要があります。

SKIP

式のかわりに使用され、その列を空白のままにすることを示します。

表10-5 ROWの列属性

属性 意味

WIDTH n

(W n)

列の幅を空白n個分にする。最初の列のデフォルトの幅は、LCOLWIDTHオプションの値。他の列は、COLWIDTHオプションの値。最大幅は4,000文字。幅が0の列は表示されない。

SPACE n

(SP n)

n個の空白を列の前に挿入。最初の列のデフォルト値は0、他の列は1

INDENT n

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

LEFT

(L)

列内で値を左揃え。(TEXTデータのデフォルト)

RIGHT

(R)

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

CENTER

(C)

列内で値を中央揃え。

LSET 'text'

textを値の左側に追加。NA値を含む式で使用した場合、指定したテキストがNA値の左側に追加されることはない。

NOLSET

値の左側に何も追加しない。

RSET 'text'

textを値の右側に追加。NA値を含む式で使用した場合、指定したテキストがNA値の右側に追加されることはない。

NORSET

値の右側に何も追加しない。

FILL 'char'

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

DECIMAL n

(D n)

小数桁をn桁表示。小数桁は、DECIMALCHARオプションに現在指定されている文字で区切られる。小数桁の数のデフォルト値は、DECIMALSオプションで制御される。

NODECIMAL

DECIMALSオプションで指示された小数桁の桁数を表示。

COMMA

カンマ、またはTHOUSANDSCHARオプションに現在記録されている文字で、3桁および6桁を区切る。デフォルト値はCOMMASオプションで制御される。

NOCOMMA

3桁および6桁を文字で区切らない。

PAREN

カッコを使用して負の数を表す。デフォルト値はPARENSオプションで制御される。

NOPAREN

マイナス符号を使用して負の数を表す。デフォルト値はPARENSオプションで制御される。

LEADINGZERO

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

NOLEADINGZERO

-1から1までの小数に先行するゼロを非表示にする。DECIMAL属性を0に設定し、NOLEADINGZEROキーワードを使用した場合、0に丸められる-1から1までの小数値は表示されない。

CNLEADINGZERO

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

MNOTATION

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

CMNOTATION

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

NOMNOTATION

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

MDECIMAL n

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

ENOTATION

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

CENOTATION

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

NOENOTATION

E表記法を使用しない(デフォルトの設定は条件付きのM表記法)。

EDECIMAL n

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

NASPELL 'text'

NA値のかわりにtextを使用。デフォルト値はNASPELLオプションで制御される。

NONASPELL

NASPELLオプションに指定した内容でNA値を表示。

ZSPELL 'text'

ゼロの数値のかわりにtextを使用。デフォルト値はZSPELLオプションで制御される。

NOZSPELL

ZSPELLオプションで指定した内容でゼロ値を表示。

YESSPELL 'text'

TRUEブール値として使用するテキスト。デフォルト値はYESSPELLオプションで記録。

NOSPELL 'text'

FALSEブール値として使用するテキスト。デフォルト値はNOSPELLオプションで記録。

TRUNCATE

(TRUNC)

文字値が列に収まらない場合、文字値を列幅に合せて切り捨てる。

NOTRUNCATE

(NOTRUNC)

文字値が列に収まらない場合、追加の行を生成。

FOLDUP

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

FOLDDOWN

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

VALONLY

値に対してのみ下線または上線を引く。(UNDERおよびOVERと組み合せて使用。)

NOVALONLY

列の幅全体に下線または上線を引く。(UNDERおよびOVERと組み合せて使用。)

UNDER textexp

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

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

IF boolean-expression THEN '-' ELSE ''

OVER textexp

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

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

IF boolean-expression THEN '-' ELSE ''


表10-6「行と列の計算」に示すファンクションを使用すると、すでにレポートに生成されている値に対して計算を実行できます。

表10-6 行と列の計算

ファンクション データ型 戻り値

COLVAL(n)

DECIMAL

現行の行のn番目の列の値。0の場合、絶対的な列番号(左マージンから右に向かって)。n < 0の場合、相対的な列番号(現行の列から左に)。

 

RUNTOTAL(n)

ここで、

n = 1、2、...32

DECIMAL

nについて、SUBTOTALまたはZEROTOTALが最後に実行されてから現行の列で生成されたすべての数字の合計。nの合計を0にリセットしない。

SUBTOTAL(n)

ここで、

n = 1、2、...32

DECIMAL

nについて、SUBTOTALまたはZEROTOTALが最後に実行されてから現行の列で生成されたすべての数字の合計。nの合計を0にリセット。

 


表10-7「レポート関連のオプション」に示すオプションは、ROWコマンドのデフォルトの書式に影響を与えます。

表10-7 レポート関連のオプション

オプション 意味

COLWIDTH

WIDTH属性を使用しない場合の最初の列以外の列幅。デフォルトは10です。

COMMAS

COMMA属性およびNOCOMMA属性を使用しない場合に3桁区切り文字を使用するかどうかを指定します。デフォルトはYES(区切り文字を使用)です。

DECIMALS

DECIMAL属性を使用しない場合の小数点以下の桁数。デフォルトは2です。

LCOLWIDTH

WIDTH属性を使用しない場合の最初の列の列幅。デフォルトは14です。

LSIZE

STDHDRプログラムが標準ヘッダーを中央揃えする行サイズを定義します。デフォルトは80文字です。

NASPELL

NASPELL属性を使用しない場合にNA値に使用するテキスト。デフォルト・テキストはNAです。

NLS_LANGUAGE

TRUEおよびFALSEのブール値に使用するテキストを指定します。これらの値は、YESSPELLおよびNOSPELLオプションに反映されます。

NLS_TERRITORY

小数点および3桁を区切る文字を指定します。これらの値は、DECIMALCHARおよびTHOUSANDSCHARオプションに反映されます。

PARENS

PAREN属性およびNOPAREN属性を使用しない場合に、負の数にカッコを使用します。デフォルトはNO(カッコを使用せず、マイナス符号を使用)です。

ZEROROW

すべての数値がゼロの行の生成または非表示を制御します。デフォルトはNO(ゼロの行を生成)です。

ZSPELL

ZSPELL属性を使用しない場合にゼロ値に使用するテキスト。デフォルトのテキストはOFFで、ゼロ(0)を表示します。


表10-8「ROWコマンドと互換性のあるOLAP DML文」に示す文をROWコマンドとともに使用します。

表10-8 ROWコマンドと互換性のあるOLAP DML文

コマンド 処理

BLANK n

n行の空白行を生成します。デフォルトは1行です。

HEADING column-

description(s)

レポートのタイトルおよび列ヘッダーを生成します。ヘッダーの数値は列合計に加算されません。

PAGE

PAGINGの設定がYESの場合、出力に改ページを挿入します。

ZEROTOTAL

すべての列について、32の合計をすべて0にリセットします。

ZEROTOTAL ALL col(s)

指定した列について、または列引数がない場合はすべての列について、32の合計をすべて0にリセットします。

ZEROTOTAL n col(s)

指定した列について、または列引数がない場合はすべての列について、指定された合計(n)を0にリセットします。


使用上の注意

レポート書込みのコマンド

ROWコマンドと関連付けられているオプションおよびコマンドは、まとめてレポート書込み文と呼ばれます表10-6「行と列の計算」は、レポートで行と列の計算に使用できるファンクションを示します。表10-7「レポート関連のオプション」は、ROW出力のデフォルトの書式を決定するレポート関連のオプションを示します。表10-8「ROWコマンドと互換性のあるOLAP DML文」は、レポートを作成する際、ROWと組み合せて使用する追加文を示します。PAGINGオプションと関連付けられているページング関連のオプションを使用して、ページ向け書式のレポート・プログラムを作成できます。

コンポジットと結合ディメンションのラベル

ディメンション・リストにコンポジットまたは結合ディメンションを持つデータのレポートを生成する場合、KEYファンクションを使用してベース・ディメンションごとにラベル列を生成できます。また、ラベル列ごとに別のWIDTH属性を指定できます。たとえば、ベース・ディメンションproductおよびdistrictによるコンポジットであるproddistの場合、次のような文を使用できます。

FOR proddist
   ROW W 12 KEY(proddist district) W 8 KEY(proddist product) ...

複数式

同じ書式属性またはACROSS句を複数のデータ式に適用する場合は、それらの式を山カッコ(< >)で囲み、共通の属性またはACROSS句をそのカッコで囲んだ式の直前に置きます。

attributes <expression1expression2, ...> 

または

ACROSS dimension: <expression1expression2, ...>

山カッコ内の1つの式にのみ適用する属性がある場合は、その式の直前に適用する属性を置きます。

attributes1 <expression1attributes2 expression2>

山カッコ内の属性(ある列に固有)がカッコ外の属性(複数の列に共通)と矛盾する場合、固有の属性が共通の属性よりも優先されます。

左右のカッコの数が同じである場合、カッコは任意の深さまでネストできます。

個別のACROSS句

ACROSS句で生成するデータの場合、ある式のすべての列を作成してから、別のACROSS句を使用して追加する式にそのすべての列を作成できます。

ACROSS dimexpression1, ACROSS dimexpression2

また、ACROSS句をネストして、式の2つ以上のディメンションのデータ列を行全体に表示できます。

ACROSS dim1: ACROSS dim2expression

行と列の計算

行と列の計算に使用できるファンクションのリストは、表10-6「行と列の計算」を参照してください。これらのファンクションを使用して、レポートの生成済の値に計算を実行できます。Oracle OLAPでは、列ごとに32の現在までの合計を保持するため、レポートには最大で32レベルの小計を含めることができます。ただし、数値が大きすぎるためにデータ・セルに収まらない場合、ROWはセルの右側に記号Mを付けて最も近い百万の単位にその数値を丸めます。それでも値が大きすぎる場合、値はアスタリスクに置き換えられます。

例10-109 データ値のラベリング

この例では、ROWは、salesの値とそれを特定するdistrictmonthおよびproductの対応するディメンション値を含む出力行を生成します。

ROW W 8 district month product sales

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

Boston        Jan95      Tents  32,153.52

例10-110 2つの変数のレポート

このROW文で生成される出力行には、districtの現行のディメンション値、その後ろに1996年の最初の2か月に関するスポーツウェアのsalesおよびsales.planの値が表示されます。

LIMIT month TO 'Jan96' 'Feb96'
LIMIT product TO 'Sportswear'
ROW W 8 district ACROSS month: <sales sales.plan>

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

Boston    57,079.10  61,434.20  63,121.50  64,006.91

例10-111 出力の書式設定とラベリング

このROW文では、1996年のテントについて実際の売上高および予定売上高を表示します。monthのステータスをこのROW文についてのみ制限するため、ACROSS句に値Jun96を含めます。値はドル単位の整数値として書式化し、さらに、その値にはドル記号、および実績値か予測値かを区別するラベルをそれぞれ付けます。

LIMIT product TO 'Tents'
ROW WIDTH 15 name.product ACROSS month 'Jun96': -
   DECIMAL 0 LSET '$' W 18 -
   <RSET ' (actual)' sales -
   RSET ' (plan)' sales.plan>

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

3-Person Tents    $95,121 (actual)     $80,138 (plan)

例10-112 コンポジットでディメンション化された変数に関するレポート

この例で、D.SALESはディメンション・リストにディメンションmonthおよび名前のないコンポジットSPARSE <product district>を含む変数です。ROW文のACROSS句でコンポジットを指定することにより、コンポジットに値が含まれるデータ・セルのみを含むレポートを作成できます。

LIMIT product TO ALL
LIMIT district TO 'Atlanta'
LIMIT month TO 'Jan96'
ROW ACROSS SPARSE <product district>: d.sales