Si está en SQL Server 2008 o una versión posterior, puede usar ROLLUP()
Función AGRUPAR POR:
SELECT
Type = ISNULL(Type, 'Total'),
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;
Esto supone que el Type
la columna no puede tener valores NULL y, por lo tanto, NULL en esta consulta indicaría la fila acumulada, la que tiene el total general. Sin embargo, si el Type
la columna puede tener valores NULL propios, el tipo de contabilidad más adecuado para la fila total sería como en la respuesta de @ Declan_K, es decir, usando GROUPING()
función:
SELECT
Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;