GROUPING SETS 関数によるグループ化 その2 WITH CUBE の置き換え

SQL Server 2008 からの新機能である GROUPING SETS 関数は、次のように WITH CUBE を置き換えとしても利用できます。

たとえば、次の SQL があるとします(WITH CUBE を利用)。

SELECT 区分名, YEAR(受注日) AS 年, SUM( od.数量 * od.単価) AS 受注金額
FROM 受注明細 od
	INNER JOIN 受注 o ON o.受注コード = od.受注コード
	INNER JOIN 商品 s ON od.商品コード = s.商品コード
	INNER JOIN 商品区分 c ON s.区分コード = c.区分コード
GROUP BY 区分名, YEAR(受注日)
WITH CUBE


この SQL は、GROUPING SETS 関数を利用して、次のように置き換えることもできます。

SELECT 区分名, YEAR(受注日) AS 年, SUM( od.数量 * od.単価) AS 受注金額
FROM 受注明細 od
	INNER JOIN 受注 o ON o.受注コード = od.受注コード
	INNER JOIN 商品 s ON od.商品コード = s.商品コード
	INNER JOIN 商品区分 c ON s.区分コード = c.区分コード
GROUP BY GROUPING SETS (   ( 区分名, YEAR(受注日) ) 
			 ,(区分名)
			 ,(YEAR(受注日))
			 ,() )


そのほかの SQL Server 2008 の新機能の具体的な利用方法については、弊社執筆の SQL Server 2008 自習書シリーズ(下記 URL)の「SQL Server 2008 の注目の新機能をイチ早く試してみよう! 」編を参考にしてみてください。
http://www.microsoft.com/japan/sqlserver/2008/self-learning/default.mspx