sql >> Database >  >> RDS >> Sqlserver

SQL cumulatieve telling

Hier is een manier om het te doen met een CTE in plaats van een 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

Let op:dit is bestellen door aflopend Count zoals uw voorbeeldresultaat doet. Als er een andere kolom is die niet wordt weergegeven en die moet worden gebruikt om te bestellen, vervang dan gewoon Count in elk van de ORDER BY clausules.

SQL Fiddle-demo



  1. Ik wil een nieuwe kolom retourneren met recursief in SQL?

  2. Sql-query voor boomtabel

  3. Waarom script retourneren Fout met deze code in php?

  4. Nullable DateTime uit de database halen