Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Aggiungi una riga di riepilogo con i totali

Se utilizzi SQL Server 2008 o versioni successive, puoi utilizzare ROLLUP() GRUPPO PER funzione:

SELECT
  Type = ISNULL(Type, 'Total'),
  TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;

Ciò presuppone che il Type la colonna non può avere NULL e quindi il NULL in questa query indicherebbe la riga di rollup, quella con il totale generale. Tuttavia, se il Type la colonna può avere NULL propri, il tipo più appropriato di contabilità per la riga totale sarebbe come nella risposta di @Declan_K, ovvero usando il GROUPING() funzione:

SELECT
  Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
  TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;