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

Soma cumulativa do SQL Server por grupo


No SQL Server 2005, eu faria isso usando uma 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;

Se você realmente deseja adicionar isso a uma tabela, você precisa alterar a tabela para adicionar a coluna e, em seguida, fazer uma atualização. Se a tabela tiver inserções e atualizações, você precisará adicionar um gatilho para mantê-la atualizada. Obtê-lo através de uma consulta é definitivamente mais fácil.

No SQL Server 2012, você pode fazer isso usando a sintaxe:
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;