Här är ett sätt att göra det med en CTE istället för en markör:
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
Observera att detta är ordning genom fallande Count
som ditt provresultat gör. Om det finns någon annan kolumn som inte visas som ska användas för beställning är det bara att byta ut Count
i var och en av ORDER BY
klausuler.