sql >> Databasteknik >  >> RDS >> Sqlserver

Perpetual Weighted Average Coalculation SQL Server 2008

Om jag förstår det rätt vill du ha det kumulativa genomsnittspriset.

Detta tillvägagångssätt använder underfrågor för att beräkna den ackumulerade totala kvantiteten och den ackumulerade summan som betalats. Förhållandet är den genomsnittliga kostnaden:

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

I SQL Server 2012 kan du göra detta genom att direkt beräkna kumulativa summor (bör vara effektivare). Du kan också göra detta med cross apply , men jag föredrar standard SQL.




  1. #1273 - Okänd sammanställning:'utf8mb4_unicode_ci' cPanel

  2. Slå samman data till två måltabeller

  3. Heroku Postgres:Den här anslutningen har stängts

  4. Hur implementerar man pessimistisk låsning i en php/mysql-webbapplikation?