これを行うには 2 つの方法があります。1 つ目は、これを行う sql-server-2008 より前の古い方法ですUNION ALL
。最初SELECT
にテーブルから元のデータを返し、2 つ目に 01、02、および Total フィールドの合計を返します。
SELECT maingroup,
subgroup,
subsubgroup,
season,
vendorid,
[01] AS '01',
[02] AS '02',
Total AS Total
FROM #aa
UNION ALL
SELECT null as maingroup,
null as subgroup,
null as subsubgroup,
null as season,
null as vendorid,
sum([01]) AS '01',
sum([02]) AS '02',
sum(Total) AS Total
FROM #aa
sql-server-2008 以降では、代わりにこれを使用できますGROUPING SETS
。上記のクエリと同等のクエリGROUPING SETS
は次のとおりです。
SELECT maingroup,
subgroup,
subsubgroup,
season,
vendorid,
sum([01]) AS '01',
sum([02]) AS '02',
sum(Total) AS Total
FROM #aa
GROUP BY GROUPING SETS((maingroup, subgroup, subsubgroup, season, vendorid), ())
両方とも次のように返されます。
GROUPING SETS EquivalentsおよびUsing GROUP BY with ROLLUP, CUBE, and GROUPING SETSは、使用に関する優れた情報を提供する 2 つの追加情報源です。GROUPING SETS