SUBTOTALファンクションは、レポートで累計される小計の1つの値を返すファンクションです。通常はROWコマンド内でSUBTOTALファンクションを使用して、レポートに小計または総計を追加します。Oracle OLAPは各列に32の現在までの合計を保持するため、最大32レベルの小計を含めることができます。
注意: REPORT文では、GRANDTOTALSおよびSUBTOTALSキーワードを使用して、総計および小計の行を含めます。 |
パラメータ
レポートにおける各数値列の現在までの合計のレベルを示すINTEGER
値。たとえば、「Total」をレベル1の小計に、「Grand Total」をレベル2の小計にできます。列には最大32レベルの現在までの合計を含めることができるため、nは1から32のINTEGER
にする必要があります。SUBTOTALは、現行の列のこの小計の値を返し、小計nの値をゼロにリセットします。
32の小計を参照する番号(1から32)には固有の意味はなく、すべての小計は参照されるまで同じです。
使用上の注意
自動的な小計のリセット
ROWコマンドでSUBTOTALファンクションを使用して現行の列の小計を含める場合、そのレベルの小計はゼロにリセットされます。
ZEROTOTALによる小計のリセット
ROWコマンドを使用してレポートを作成する場合、ZEROTOTAL文を使用すると任意の列の小計をゼロにリセットできます。通常、ZEROTOTALはレポート・プログラムの開始時に使用し、最初にすべての合計がゼロになるようにします。
NA値とSUBTOTAL
SUBTOTALは、NA
値を無視します。すべての値がNA
の場合、SUBTOTALはゼロを返します。
例
例8-124 レポートにおける小計および総計の計算
売上レポートに、各地域の小計を表示するとします。レポートの終わりには、すべての売上の総計も表示するとします。SUBTOTAL(1)
を使用して、各地域の小計を生成できます。この小計は、使用するたびに0
にリセットされるため、各地域別の小計が計算されます。レポートの終わりには、SUBTOTAL(2)
を使用して総計を生成できます。レポート内ではこれを使用していないため、すべての地域の売上高の合計が保持されます。
LIMIT month TO FIRST 3 LIMIT region TO ALL ZEROTOTAL ALL FOR region DO ROW region LIMIT DISTRICT TO region FOR district DO ROW INDENT 5 district ACROSS month: sales DOEND ROW INDENT 5 'Total' ACROSS month: OVER '-' SUBTOTAL(1) BLANK DOEND ROW 'Grand Total' ACROSS month: OVER '=' SUBTOTAL(2)
このプログラムによって生成される出力は、次のとおりです。
East Boston 32,153.52 32,536.30 43,062.75 Atlanta 40,674.20 44,236.55 51,227.06 ---------- ---------- ---------- Total 72,827.72 76,772.85 94,289.81 Central Chicago 29,098.94 29,010.20 39,540.89 Dallas 47,747.98 50,166.81 67,075.44 ---------- ---------- ---------- Total 76,846.92 79,177.01 106,616.33 West Denver 36,494.25 33,658.24 45,303.93 Seattle 43,568.02 41,191.28 51,547.23 ---------- ---------- ---------- Total 80,062.27 74,849.52 96,851.16 ========== ========== ========== Grand Total 229,736.91 230,799.38 297,757.30