rollupは、指定したカラムに基づいてデータをグループ化し、超集合行という行を生成します。
rollupは、group by句で指定します。
書式は以下のような書き方になります。
select parts_no,sum(suryo)
from table
groub by rollup(parts_no)
上記SQLは、parts_no毎のsuryoを表示しますが、このデータに対して最後に超集合行という小計値を表示する行を追加します。
group by句が、group by parts_noであった場合の結果が以下のようであったとします。
parts_no sum(suryo)
-------- ----------
aaa 2
bbb 3
ccc 3
rollupは、このデータに対して最終行に超集合行という小計値行を追加します。
上記のように結果が3件の場合、rollupを使用すると3(標準行)+1(超集合行)=4行となります。
したがって元のSQLの結果は以下のようになります。
parts_no sum(suryo)
-------- ----------
aaa 2
bbb 3
ccc 3
NULL 8 ←超集合行
この時、rollupで指定したparts_noはnullになります。
rollupで複数指定した場合、一番最初に指定したカラム毎に、二番目で指定したカラムをサマリーします。
その後、一番最初に指定したカラムごとの小計値を表示します。
以下のようなデータがあるとします。
client_cd parts_no sum(suryo)
--------- -------- ----------
001 aaa 2
001 aaa 3
001 bbb 1
002 bbb 3
002 bbb 3
003 ccc 3
003 ddd 3
このデータに対して以下のSQLを実行します。
select client_cd,parts_no,sum(suryo)
from table
groub by rollup(client_cd,parts_no)
上記SQLは、client_cd毎にparts_noをサマリーします。
そして、client_cd毎に超集合行を生成します。よって実行結果は以下のようになります。
client_cd parts_no sum(suryo)
--------- -------- ----------
001 aaa 5
001 bbb 1
001 6 ←超集合行
002 bbb 6
002 6 ←超集合行
003 ccc 3
003 3 ←超集合行
003 ddd 3
003 3 ←超集合行
18 ←超集合行