Om jag förstår det rätt vill du ha det kumulativa genomsnittspriset.
Detta tillvägagångssätt använder underfrågor för att beräkna den ackumulerade totala kvantiteten och den ackumulerade summan som betalats. Förhållandet är den genomsnittliga kostnaden:
select t.*, cumepaid / cumeqty as avg_cost
from (select t.*,
(select SUM(qty) from t t2 where t2.item_id = t.item_id and t2.purch_id <= t.purch_id
) as cumeqty,
(select SUM(qty*unit_price) from t t2 where t2.item_id = t.item_id and t2.purch_id <= t.purch_id
) as cumepaid
from t
) t
I SQL Server 2012 kan du göra detta genom att direkt beräkna kumulativa summor (bör vara effektivare). Du kan också göra detta med cross apply
, men jag föredrar standard SQL.