GROUPING SETS


SQL SERVER 2008から使用可能。(Oracle 10gも可)
SQL2003 標準規格で定義されている。


全体合計や、指定した項目の値ごとの合計を取得できる。




・通常のGroup By

select	hoge.YEAR ,
		hoge.NAME ,
		sum(money)
From	hoge
group by hoge.YEAR ,
		hoge.NAME 

・Group Byの結果

2007	商品A     	330
2007	商品B     	200
2008	商品A     	100
2008	商品C     	900

・ GROUPING SETSを使用

select	hoge.YEAR ,
		hoge.NAME ,
		sum(money)
From	hoge
group by GROUPING SETS (
		hoge.YEAR,
		hoge.NAME,
		()          --()は全体を取得することを指定
		)


・GROUPING SETSの結果

NULL	商品A   430		--NAMEごとの合計
NULL	商品B   200		--
NULL	商品C   900		--
NULL	NULL	1530		--全体合計
2007	NULL	530		--YEARごとの合計
2008	NULL	1000		--