sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server kumulativ summa per grupp

I SQL Server 2005 skulle jag göra detta med en korrelerad underfråga:

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;

Om du verkligen vill lägga till detta i en tabell, måste du ändra tabellen för att lägga till kolumnen och sedan göra en uppdatering. Om tabellen har infogningar och uppdateringar måste du lägga till en utlösare för att hålla den uppdaterad. Det är definitivt lättare att få igenom en fråga.

I SQL Server 2012 kan du göra detta med syntaxen:

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;



  1. Lär dig hur du använder SQL SELECT med exempel

  2. Bör varje användartabell ha ett klusterindex?

  3. Hur man importerar en JSON-fil till en SQL Server-tabell

  4. Installera utf8-kollation i PostgreSQL