Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Contagem cumulativa SQL


Aqui está uma maneira de fazer isso com um CTE em vez de um 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

Observe que isso está ordenando decrescente Count como o resultado da sua amostra. Se houver alguma outra coluna que não seja mostrada que deva ser usada para ordenação, basta substituir Count em cada um dos ORDER BY cláusulas.

Demonstração do SQL Fiddle