Ако разбирам правилно, искате кумулативната средна цена.
Този подход използва подзаявки за изчисляване на кумулативното общо количество и кумулативното общо платено. Съотношението е средната цена:
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
В SQL Server 2012 можете да направите това чрез директно изчисляване на кумулативни суми (трябва да е по-ефективно). Можете също да направите това с cross apply
, но предпочитам стандартен SQL.