Pokud tomu dobře rozumím, chcete kumulativní průměrnou cenu.
Tento přístup používá dílčí dotazy k výpočtu kumulativního celkového množství a kumulativního součtu zaplaceného. Poměr je průměrná cena:
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
V SQL Server 2012 to můžete provést přímým výpočtem kumulativních součtů (mělo by to být efektivnější). Můžete to udělat také pomocí cross apply
, ale preferuji standardní SQL.