sql >> Base de Datos >  >> RDS >> Sqlserver

Recuento acumulativo de SQL

Esta es una forma de hacerlo con un CTE en lugar de un cursor:

WITH Base AS
(
    SELECT ROW_NUMBER() OVER (ORDER BY [Count] DESC) RowNum,
    [Dept],
    [Count]
    FROM SR
)
SELECT SR.Dept, SR.Count, SUM(SR2.[Count]) Total
FROM Base SR
INNER JOIN Base SR2
    ON SR2.RowNum <= SR.RowNum
GROUP BY SR.Dept, SR.Count
ORDER BY SR.[Count] DESC

Tenga en cuenta que esto es un orden descendente Count como lo hace el resultado de su muestra. Si hay alguna otra columna que no se muestra y que debería usarse para ordenar, simplemente reemplace Count en cada uno de los ORDER BY cláusulas.

Demostración de SQL Fiddle