Pokud používáte SQL Server 2008 nebo novější verzi, můžete použít ROLLUP()
Funkce GROUP BY:
SELECT
Type = ISNULL(Type, 'Total'),
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;
To předpokládá, že Type
sloupec nemůže mít hodnoty NULL, takže hodnota NULL v tomto dotazu by označovala kumulativní řádek, ten s celkovým součtem. Pokud však Type
sloupec může mít vlastní hodnoty NULL, správnější typ účtování pro celkový řádek by byl jako v odpovědi @Declan_K, tj. pomocí GROUPING()
funkce:
SELECT
Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;