Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Ajouter une ligne récapitulative avec les totaux

Si vous êtes sur SQL Server 2008 ou une version ultérieure, vous pouvez utiliser le ROLLUP() Fonction GROUP BY :

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

Cela suppose que le Type La colonne ne peut pas avoir de NULL et donc le NULL dans cette requête indiquerait la ligne de cumul, celle avec le total général. Cependant, si le Type la colonne peut avoir ses propres valeurs NULL, le type de comptabilisation le plus approprié pour la ligne totale serait comme dans la réponse de @Declan_K, c'est-à-dire en utilisant le GROUPING() fonction :

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