Se utilizzi SQL Server 2008 o versioni successive, puoi utilizzare ROLLUP()
GRUPPO PER funzione:
SELECT
Type = ISNULL(Type, 'Total'),
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;
Ciò presuppone che il Type
la colonna non può avere NULL e quindi il NULL in questa query indicherebbe la riga di rollup, quella con il totale generale. Tuttavia, se il Type
la colonna può avere NULL propri, il tipo più appropriato di contabilità per la riga totale sarebbe come nella risposta di @Declan_K, ovvero usando il GROUPING()
funzione:
SELECT
Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;