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

Tilføj en oversigtsrække med totaler

Hvis du er på SQL Server 2008 eller nyere version, kan du bruge ROLLUP() GROUP BY-funktion:

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

Dette forudsætter, at Type kolonnen kan ikke have NULL'er, og så NULL'en i denne forespørgsel ville indikere rollup-rækken, den med totalsummen. Men hvis Type kolonne kan have sine egne NULL-værdier, den mere korrekte type regnskab for den samlede række ville være som i @Declan_K's svar, dvs. ved at bruge GROUPING() funktion:

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


  1. En løsning til DATEDIFF() ignorering af SET DATEFIRST i SQL Server (T-SQL-eksempel)

  2. Fordele ved NoSQL-databaser – Alt hvad du behøver at vide

  3. Sådan deaktiveres tjek af fremmed nøgle i MySQL

  4. Hvorfor er Oracle så langsom, når jeg sender en java.sql.Timestamp for en DATE-kolonne?