PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

उत्पादों के स्टॉक की भारित औसत लागत की गणना

आपको पुनरावर्ती CTE का उपयोग करने की आवश्यकता है:

SQLFiddle

with recursive
stock_temp as (
  select 
    *, 
    row_number() over(partition by product_id order by row_num) as rn
  from 
    stock_table 
)

,cte as (
  select 
    document_type, document_date, 
    product_id, qty_out, qty_in, price, 
    row_num, stock_balance, rn, 
    price as wac
  from 
    stock_temp where document_type = 'SI'

  union all

  select 
    sub.document_type, sub.document_date,
    sub.product_id, sub.qty_out,  sub.qty_in, sub.price,
    sub.row_num, sub.stock_balance,  sub.rn,
    case when sub.qty_in = 0 then main.wac else 
    ((sub.stock_balance - sub.qty_in) * main.wac + sub.qty_in * sub.price) 
      / ((sub.stock_balance - sub.qty_in)  + sub.qty_in) end as wac
  from 
    cte as main
    join stock_temp as sub 
      on (main.product_id = sub.product_id and main.rn + 1 = sub.rn)
)

select * from cte


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं Postgres में किसी तालिका को कैसे बदलूँ?

  2. GIS:PostGIS/PostgreSQL बनाम MySql बनाम SQL सर्वर?

  3. Postgresql varchar यूनिकोड वर्ण लंबाई या ASCII वर्ण लंबाई का उपयोग करके गणना करता है?

  4. एकाधिक स्तंभों के बीच मिलान पैटर्न

  5. रूबी-ऑन-रेल के साथ उपयोग के लिए विंडोज़ पर पोस्टग्रेज़ स्थापित करना