!--a11y-->

GROUP BY 句によって、データベーステーブルからの複数の行を選択の単一の行にまとめます。
GROUP BY 句によって、特定の列に同じ内容を持つ行をまとめることができます。集計機能は他の列に適用されます。GROUP BY 句の列を静的または動的に指定することができます。
GROUP BY 句の列を静的に指定するには、以下を使用します。
SELECT
<
行>
<s1> [AS <a1>] <s2> [AS
<a2>] ...
<agg> <sm> [AS <am>] <agg>
<sn> [AS <an>] ...
...
GROUP BY
<s1> <s2> ....
GROUP BY 句を使用するには、SELECT 句の関連列をすべて指定する必要があります。GROUP BY 句で、内容が同じである列の項目名を列挙します。データベーステーブルに表示されるとおりの項目名だけを使用することができます。SELECT 句のエイリアス名は使用できません。
GROUP BY 句に列挙されない SELECT 句の列は、すべて集計機能に含む必要があります。これにより、これらの列の内容が行の集計時に計算される方法が定義されます。

GROUP BY 句の列を動的に指定するには、以下を使用します。
... GROUP BY (<itab>) ...
ここで、<itab> は行データ型 C で最大桁数 72 文字の内部テーブルであり、列名 <s 1> <s 2> .... を含みます。

DATA: CARRID TYPE
SFLIGHT-CARRID,
MINIMUM TYPE P DECIMALS 2,
MAXIMUM TYPE P DECIMALS 2.
SELECT CARRID
MIN( PRICE ) MAX( PRICE )
INTO (CARRID, MINIMUM, MAXIMUM)
FROM SFLIGHT
GROUP BY CARRID.
WRITE: / CARRID, MINIMUM, MAXIMUM.
ENDSELECT.
出力結果は以下のとおりです。

列 CARRID と同じ値を持つデータベーステーブル SFLIGHT の行が集計されます。PRICE の最小値と最大値が各グループに対して設定され、集計行に表示されます。