Jeśli korzystasz z SQL Server 2008 lub nowszej wersji, możesz użyć ROLLUP()
Funkcja GROUP BY:
SELECT
Type = ISNULL(Type, 'Total'),
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;
Zakłada się, że Type
kolumna nie może mieć wartości NULL, więc wartość NULL w tym zapytaniu wskazuje wiersz zestawienia, ten z sumą końcową. Jeśli jednak Type
kolumna może mieć własne wartości NULL, bardziej odpowiedni typ rozliczania dla wiersza sumy będzie taki, jak w odpowiedzi @Declan_K, tj. przy użyciu GROUPING()
funkcja:
SELECT
Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;