DNa*_*Nac 7 sql sql-server sql-server-2008
我有部门的表.我需要计算在哪个部门内有多少人.这很容易做到
SELECT DEPT,
COUNT(*) as 'Total'
FROM SR
GROUP BY DEPT;
Run Code Online (Sandbox Code Playgroud)
现在我还要做累积计数如下:

我发现一些SQL来计算运行总数,但不是这样的情况.在这种情况下,你能给我一些建议吗?
这是使用CTE而不是游标执行此操作的方法:
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
Run Code Online (Sandbox Code Playgroud)
请注意,这是按照Count示例结果的降序排序.如果有一些未显示的其他列应该用于排序,只需Count在每个ORDER BY子句中替换.