Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Calcolo del costo medio ponderato perpetuo SQL Server 2008

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.