forecast_api/build/last_price.sql

120 lines
2.5 KiB
PL/PgSQL

BEGIN;
with p AS (
SELECT
part
,bill_cust
,ship_cust
,round(fb_val_loc/fb_qty,10) AS price
,orderdate
,row_number() OVER (PARTITION BY part,bill_cust, ship_cust ORDER BY orderdate DESC) rn
FROM
rlarp.osm
WHERE
fs_line = '41010'
AND calc_status <> 'CANCELED'
AND COALESCE(part,'') <> ''
AND fb_qty <> 0
AND orderdate IS NOT NULL
ORDER BY
part
,bill_cust
,ship_cust
,orderdate
)
--SELECT * FROM p WHERE rn = 1
,incr AS (
SELECT
b.plnt
,b."ddord#"
,b."dditm#"
,b."fgbol#"
,b."fgent#"
,b."diinv#"
,b."dilin#"
,b.promo
,b.return_reas
,b.terms
,b.custpo
,b.dhincr
,b.diext
,b.ditdis
,b.dcodat
,b.ddqdat
,b.dcmdat
,b.dhidat
,b.fspr
,b.remit_to
,b.bill_class
,b.bill_cust
,b.bill_rep
,b.bill_terr
,b.ship_class
,b.ship_cust
,b.ship_rep
,b.ship_terr
,b.quota_rep
,b.account
,b.shipgrp
,b.geo
,b.chan
,b.orig_ctry
,b.orig_prov
,b.orig_post
,b.dest_ctry
,b.dest_prov
,b.dest_post
,b.part
,b.ord_gldc
,b.majg
,b.ming
,b.majs
,b.mins
,b.gldc
,b.glec
,b.harm
,b.clss
,b.brand
,b.assc
,b.fs_line
,b.r_currency
,b.r_rate
,b.c_currency
,b.c_rate
,b.ddqtoi
,b.ddqtsi
,b.fgqshp
,b.diqtsh
,0 fb_qty
,0 fb_cst_loc
,0 fb_cst_loc_cur
,0 fb_cst_loc_fut
,b.fb_qty * p.price - b.fb_val_loc fb_val_loc
,0 fb_val_loc_pl
,b.calc_status
,b.flag
,b.orderdate
,b.requestdate
,b.shipdate
,b.adj_orderdate
,b.adj_requestdate
,b.adj_shipdate
,b."version"
,'last price paid' iter
FROM
rlarp.osmfs b
INNER JOIN p ON
p.part = b.part
AND p.bill_cust = b.bill_cust
AND p.ship_cust = b.ship_cust
AND p.rn = 1
WHERE
b.orderdate BETWEEN '2019-03-25' AND '2019-05-31'
OR b.orderdate BETWEEN '2020-03-25' AND '2020-05-31'
)
, ins AS (
INSERT INTO rlarp.osmfs SELECT * FROM incr RETURNING *
)
SELECT fspr, sum(fb_val_loc *r_rate) FROM ins GROUP BY fspr;
COMMIT;