Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fügen Sie eine Zusammenfassungszeile mit Summen hinzu

Wenn Sie SQL Server 2008 oder eine neuere Version verwenden, können Sie ROLLUP() verwenden GROUP BY-Funktion:

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

Dies setzt voraus, dass der Type -Spalte darf keine NULL-Werte enthalten, und daher würde NULL in dieser Abfrage die Rollup-Zeile anzeigen, diejenige mit der Gesamtsumme. Wenn jedoch der Type -Spalte eigene NULL-Werte haben kann, wäre die richtigere Art der Abrechnung für die Gesamtzeile wie in der Antwort von @Declan_K, dh die Verwendung von GROUPING() Funktion:

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