Se siete su SQL Server 2008 o versione successiva, è possibile utilizzare il ROLLUP()
GROUP BY funzione:
SELECT
Type = ISNULL(Type, 'Total'),
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;
Ciò presuppone che la colonna Type
non può avere NULL e quindi il NULL in questa query indicherebbe il fila di rollup, quella con il totale generale. Tuttavia, se la colonna Type
può avere valori null del proprio, il tipo più adatto di contabilità per la riga totale sarebbe come in @ di Declan_K risposta, vale a dire utilizzando la funzione GROUPING()
:
SELECT
Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;
fonte
2013-07-29 21:55:15
Sql Server ha il supporto per i totali parziali: [vedere con rollup] (http://msdn.microsoft.com/en-us/library/ms189305%28v=sql.90%29.aspx). –