sql >> Databasteknik >  >> RDS >> Sqlserver

Lägg till en sammanfattningsrad med totaler

Om du använder SQL Server 2008 eller senare version kan du använda ROLLUP() GROUP BY-funktion:

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

Detta förutsätter att Type kolumnen kan inte ha NULL och så NULL i den här frågan skulle indikera sammandragningsraden, den med totalsumman. Men om Type kolumnen kan ha sina egna NULL-värden, den mer korrekta typen av redovisning för den totala raden skulle vara som i @Declan_K:s svar, d.v.s. att använda GROUPING() funktion:

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


  1. Felsökning av Microsoft SQL Server Error 18456

  2. Hur PERIOD_ADD() fungerar i MariaDB

  3. Oracle-klienten och nätverkskomponenter hittades inte

  4. Problemuppsättning 2 – Identifiera enheter och attribut