Se ho capito bene, vuoi il prezzo medio cumulativo.
Questo approccio utilizza le sottoquery per calcolare la quantità totale cumulativa e il totale cumulativo pagato. Il rapporto è il costo medio:
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
In SQL Server 2012, puoi farlo calcolando direttamente le somme cumulative (dovrebbe essere più efficiente). Puoi anche farlo con cross apply
, ma preferisco l'SQL standard.