sql >> Base de Datos >  >> RDS >> Sqlserver

Agregar una fila de resumen con totales

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)
;