valores una total sumar resultados registros numero numerar filas fila contar consulta columna agrupar agrupados sql sql-server rollup

total - sumar valores de una columna sql



Agregar una fila de resumen con totales (4)

Sé que esto suena loco y probablemente no debería hacerse de esta manera, pero necesito algo como esto: tengo un registro de SELECT [Type], [Total Sales] From Before

Quiero agregar una fila adicional al final para mostrar la SUMA al final de la tabla (Después). ¿Podría hacerse esto?


Esta es la sintaxis de agrupación / resumen más potente que querrá usar en SQL Server 2008+. Siempre es útil para especificar la versión que está utilizando para que no tengamos que adivinar.

SELECT [Type] = COALESCE([Type], ''Total''), [Total Sales] = SUM([Total Sales]) FROM dbo.Before GROUP BY GROUPING SETS(([Type]),());

Craig Freedman escribió una excelente publicación en el blog introduciendo GROUPING SETS .


Podrías usar el operador ROLLUP

SELECT CASE WHEN (GROUPING([Type]) = 1) THEN ''Total'' ELSE [Type] END AS [TYPE] ,SUM([Total Sales]) as Total_Sales From Before GROUP BY [Type] WITH ROLLUP


Si está en SQL Server 2008 o una versión posterior, puede usar la ROLLUP() GRUPO POR ROLLUP() :

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

Esto supone que la columna Type no puede tener NULL y, por lo tanto, NULL en esta consulta indicaría la fila de resumen, la que tiene el total general. Sin embargo, si la columna Type puede tener NULL propios, el tipo de contabilidad más apropiado para la fila total sería como en la respuesta de @Declan_K, es decir, utilizando la función GROUPING() :

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


Trate de usar la union all como sigue

SELECT [Type], [Total Sales] From Before union all SELECT ''Total'', Sum([Total Sales]) From Before

Si tiene problemas con el pedido, como i-one sugirió, intente esto:

select [Type], [Total Sales] from (SELECT [Type], [Total Sales], 0 [Key] From Before union all SELECT ''Total'', Sum([Total Sales]), 1 From Before) sq order by [Key], Type