Jika saya mengerti dengan benar, Anda menginginkan harga rata-rata kumulatif.
Pendekatan ini menggunakan subkueri untuk menghitung jumlah total kumulatif dan total kumulatif yang dibayarkan. Rasionya adalah biaya rata-rata:
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
Di SQL Server 2012, Anda dapat melakukan ini dengan menghitung jumlah kumulatif secara langsung (seharusnya lebih efisien). Anda juga dapat melakukan ini dengan cross apply
, tapi saya lebih suka SQL standar.