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