Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Kumulative Summe von SQL Server nach Gruppe

In SQL Server 2005 würde ich dies mit einer korrelierten Unterabfrage tun:

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;

Wenn Sie dies tatsächlich zu einer Tabelle hinzufügen möchten, müssen Sie die Tabelle ändern, um die Spalte hinzuzufügen, und dann eine Aktualisierung durchführen. Wenn die Tabelle Einfügungen und Aktualisierungen enthält, müssen Sie einen Trigger hinzufügen, um sie auf dem neuesten Stand zu halten. Es ist definitiv einfacher, es durch eine Abfrage zu bekommen.

In SQL Server 2012 können Sie dies mit der folgenden Syntax tun:

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;