Hvis jeg forstår det rigtigt, vil du have den kumulative gennemsnitspris.
Denne tilgang bruger underforespørgsler til at beregne den samlede samlede mængde og den samlede betalte samlede mængde. Forholdet er den gennemsnitlige pris:
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øre dette ved direkte at beregne kumulative summer (bør være mere effektivt). Du kan også gøre dette med cross apply
, men jeg foretrækker standard SQL.