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

Evigvægtet gennemsnitlig prisberegning SQL Server 2008

Hvis jeg forstår det rigtigt, vil du have den kumulative gennemsnitspris.

Denne tilgang bruger underforespørgsler til at beregne den samlede samlede mængde og den samlede betalte samlede mængde. Forholdet er den gennemsnitlige pris:

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øre dette ved direkte at beregne kumulative summer (bør være mere effektivt). Du kan også gøre dette med cross apply , men jeg foretrækker standard SQL.




  1. MySQL indsæt flere poster med while-løkke

  2. Installer Oracle Attunity-drivere i Visual Studio 2017

  3. SQL-forespørgsel for at vælge forskellige rækker fra venstre tabel efter indre joinforbindelse til højre tabel

  4. Mysql seneste rekord for særskilt kolonne