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

Nombre cumulatif SQL

Voici une façon de le faire avec un CTE au lieu d'un curseur :

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

Notez qu'il s'agit d'un ordre décroissant Count comme le fait votre résultat d'échantillon. S'il y a une autre colonne qui n'est pas affichée et qui devrait être utilisée pour la commande, remplacez simplement Count dans chacun des ORDER BY clauses.

Démo SQL Fiddle