Wenn ich das richtig verstehe, wollen Sie den kumulierten Durchschnittspreis.
Dieser Ansatz verwendet Unterabfragen, um die kumulierte Gesamtmenge und die kumulierte bezahlte Summe zu berechnen. Das Verhältnis sind die durchschnittlichen Kosten:
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 können Sie dies tun, indem Sie kumulierte Summen direkt berechnen (sollte effizienter sein). Sie können dies auch mit cross apply
tun , aber ich bevorzuge Standard-SQL.