sql >> Base de Datos >  >> RDS >> Sqlserver

Suma acumulativa de SQL Server por grupo

En SQL Server 2005, haría esto usando una subconsulta correlacionada:

select dummy_id, date_registered, item_id, quantity, price,
       (select sum(quantity)
        from t t2
        where t2.item_id = t.item_id and
              t2.date_registered <= t.date_registered
       ) as cumulative
from table t;

Si realmente desea agregar esto a una tabla, debe modificar la tabla para agregar la columna y luego hacer una actualización. Si la tabla tiene inserciones y actualizaciones, deberá agregar un activador para mantenerla actualizada. Obtenerlo a través de una consulta es definitivamente más fácil.

En SQL Server 2012, puede hacer esto usando la sintaxis:

select dummy_id, date_registered, item_id, quantity, price,
       sum(quantity) over (partition by item_id order by date_registered) as cumulative
from table t;