302 lines
7.6 KiB
SQL
302 lines
7.6 KiB
SQL
WITH
|
|
tdr AS (
|
|
SELECT
|
|
DATERANGE('2020-05-01','2021-05-01','[)') drange
|
|
,DATERANGE('2020-05-01' + ('1 year'::interval),'2021-05-01' + ('1 year'::interval),'[)') repl
|
|
,'1 year'::interval AS incr
|
|
,(SELECT jsonb_agg(x.v) FROM (VALUES('copy'),('actuals'),('actuals plug'),('adj price'),('adj volume')) AS x(v)) iter
|
|
)
|
|
,remove AS (
|
|
SELECT
|
|
-----------documents-------------
|
|
null::int "ddord#"
|
|
,null::int "dditm#"
|
|
,null::int "fgbol#"
|
|
,null::int "fgent#"
|
|
,null::int "diinv#"
|
|
,null::int "dilin#"
|
|
,null::int quoten
|
|
,null::int quotel
|
|
----------dates/status------------------
|
|
,o.odate dcodat
|
|
,o.rdate ddqdat
|
|
,null::date dcmdat
|
|
,null::date fesdat
|
|
,o.dhidat
|
|
,null::text fesind
|
|
,null::text dhpost
|
|
,o.fspr
|
|
-----------measures--------------------
|
|
,null::numeric ddqtoi
|
|
,null::numeric ddqtsi
|
|
,null::numeric fgqshp
|
|
,null::numeric diqtsh
|
|
,null::numeric diext
|
|
,null::numeric ditdis
|
|
,null::jsonb discj
|
|
,null::text dhincr
|
|
,o.plnt
|
|
,o.promo
|
|
,o.return_reas
|
|
,o.terms
|
|
,null::text custpo
|
|
,null::text remit_to
|
|
,null::text bill_class
|
|
,o.bill_cust
|
|
,null::text bill_rep
|
|
,null::text bill_terr
|
|
,null::text ship_class
|
|
,o.ship_cust
|
|
,null::text ship_rep
|
|
,null::text ship_terr
|
|
,o.dsm
|
|
,null::text account
|
|
,null::text shipgrp
|
|
,null::text geo
|
|
,null::text chan
|
|
,null::text chansub
|
|
,null::text orig_ctry
|
|
,null::text orig_prov
|
|
,null::text orig_post
|
|
,null::text bill_ctry
|
|
,null::text bill_prov
|
|
,null::text bill_post
|
|
,null::text dest_ctry
|
|
,null::text dest_prov
|
|
,null::text dest_post
|
|
,o.part
|
|
,null::text styc
|
|
,null::text colc
|
|
,null::text colgrp
|
|
,null::text coltier
|
|
,null::text colstat
|
|
,null::text sizc
|
|
,null::text pckg
|
|
,null::text kit
|
|
,null::text brnd
|
|
,null::text majg
|
|
,null::text ming
|
|
,null::text majs
|
|
,null::text mins
|
|
,null::text gldco
|
|
,null::text gldc
|
|
,null::text glec
|
|
,null::text harm
|
|
,null::text clss
|
|
,null::text brand
|
|
,null::text assc
|
|
,null::text ddunit
|
|
,null::text unti
|
|
,null::numeric lbs
|
|
,null::numeric plt
|
|
,null::text plcd
|
|
,o.fs_line
|
|
,o.r_currency
|
|
,o.r_rate
|
|
,o.c_currency
|
|
,o.c_rate
|
|
,-sum(o.fb_qty) fb_qty
|
|
,-sum(o.fb_val_loc) fb_val_loc
|
|
,-sum(o.fb_val_loc_dis) fb_val_loc_dis
|
|
,-sum(o.fb_val_loc_qt) fb_val_loc_qt
|
|
,-sum(o.fb_val_loc_pl) fb_val_loc_pl
|
|
,-sum(o.fb_val_loc_tar) fb_val_loc_tar
|
|
,-sum(o.fb_cst_loc) fb_cst_loc
|
|
,-sum(o.fb_cst_loc_cur) fb_cst_loc_cur
|
|
,-sum(o.fb_cst_loc_fut) fb_cst_loc_fut
|
|
,o.calc_status
|
|
,o.flag
|
|
,o.odate
|
|
,o.oseas
|
|
,o.rdate
|
|
,o.rseas
|
|
-----when null, greatest/least is just going to act like coalesce
|
|
,o.sdate
|
|
,o.sseas
|
|
,o.version
|
|
,o.iter
|
|
FROM
|
|
rlarp.osmf_dev o
|
|
CROSS JOIN tdr
|
|
WHERE
|
|
--collect all the rows in the base period and
|
|
--the destination slot for the new rows
|
|
o.odate <@ tdr.drange
|
|
OR o.odate <@ tdr.repl
|
|
GROUP BY
|
|
o.odate
|
|
,o.rdate
|
|
,o.dhidat
|
|
,o.fspr
|
|
,o.plnt
|
|
,o.promo
|
|
,o.return_reas
|
|
,o.terms
|
|
,o.bill_cust
|
|
,o.ship_cust
|
|
,o.dsm
|
|
,o.part
|
|
,o.fs_line
|
|
,o.r_currency
|
|
,o.r_rate
|
|
,o.c_currency
|
|
,o.c_rate
|
|
,o.calc_status
|
|
,o.flag
|
|
,o.odate
|
|
,o.oseas
|
|
,o.rdate
|
|
,o.rseas
|
|
,o.sdate
|
|
,o.sseas
|
|
)
|
|
,stack AS (
|
|
SELECT * FROM rlarp.osmf_stage
|
|
UNION ALL
|
|
SELECT * FROM remove
|
|
)
|
|
,merge_diff AS (
|
|
SELECT
|
|
-----------documents-------------
|
|
null::int "ddord#"
|
|
,null::int "dditm#"
|
|
,null::int "fgbol#"
|
|
,null::int "fgent#"
|
|
,null::int "diinv#"
|
|
,null::int "dilin#"
|
|
,null::int quoten
|
|
,null::int quotel
|
|
----------dates/status------------------
|
|
,o.odate dcodat
|
|
,o.rdate ddqdat
|
|
,null::date dcmdat
|
|
,null::date fesdat
|
|
,o.dhidat
|
|
,null::text fesind
|
|
,null::text dhpost
|
|
,o.fspr
|
|
-----------measures--------------------
|
|
,null::numeric ddqtoi
|
|
,null::numeric ddqtsi
|
|
,null::numeric fgqshp
|
|
,null::numeric diqtsh
|
|
,null::numeric diext
|
|
,null::numeric ditdis
|
|
,null::jsonb discj
|
|
,null::text dhincr
|
|
,o.plnt
|
|
,o.promo
|
|
,o.return_reas
|
|
,o.terms
|
|
,null::text custpo
|
|
,null::text remit_to
|
|
,null::text bill_class
|
|
,o.bill_cust
|
|
,null::text bill_rep
|
|
,null::text bill_terr
|
|
,null::text ship_class
|
|
,o.ship_cust
|
|
,null::text ship_rep
|
|
,null::text ship_terr
|
|
,o.dsm
|
|
,null::text account
|
|
,null::text shipgrp
|
|
,null::text geo
|
|
,null::text chan
|
|
,null::text chansub
|
|
,null::text orig_ctry
|
|
,null::text orig_prov
|
|
,null::text orig_post
|
|
,null::text bill_ctry
|
|
,null::text bill_prov
|
|
,null::text bill_post
|
|
,null::text dest_ctry
|
|
,null::text dest_prov
|
|
,null::text dest_post
|
|
,o.part
|
|
,null::text styc
|
|
,null::text colc
|
|
,null::text colgrp
|
|
,null::text coltier
|
|
,null::text colstat
|
|
,null::text sizc
|
|
,null::text pckg
|
|
,null::text kit
|
|
,null::text brnd
|
|
,null::text majg
|
|
,null::text ming
|
|
,null::text majs
|
|
,null::text mins
|
|
,null::text gldco
|
|
,null::text gldc
|
|
,null::text glec
|
|
,null::text harm
|
|
,null::text clss
|
|
,null::text brand
|
|
,null::text assc
|
|
,null::text ddunit
|
|
,null::text unti
|
|
,null::numeric lbs
|
|
,null::numeric plt
|
|
,null::text plcd
|
|
,o.fs_line
|
|
,o.r_currency
|
|
,o.r_rate
|
|
,o.c_currency
|
|
,o.c_rate
|
|
,sum(o.fb_qty) fb_qty
|
|
,sum(o.fb_val_loc) fb_val_loc
|
|
,sum(o.fb_val_loc_dis) fb_val_loc_dis
|
|
,sum(o.fb_val_loc_qt) fb_val_loc_qt
|
|
,sum(o.fb_val_loc_pl) fb_val_loc_pl
|
|
,sum(o.fb_val_loc_tar) fb_val_loc_tar
|
|
,sum(o.fb_cst_loc) fb_cst_loc
|
|
,sum(o.fb_cst_loc_cur) fb_cst_loc_cur
|
|
,sum(o.fb_cst_loc_fut) fb_cst_loc_fut
|
|
,o.calc_status
|
|
,o.flag
|
|
,o.odate
|
|
,o.oseas
|
|
,o.rdate
|
|
,o.rseas
|
|
-----when null, greatest/least is just going to act like coalesce
|
|
,o.sdate
|
|
,o.sseas
|
|
,'actuals'
|
|
,'merge'
|
|
FROM
|
|
stack
|
|
WHERE
|
|
--collect all the rows in the base period and
|
|
--the destination slot for the new rows
|
|
o.odate <@ tdr.drange
|
|
OR o.odate <@ tdr.repl
|
|
GROUP BY
|
|
o.odate
|
|
,o.rdate
|
|
,o.dhidat
|
|
,o.fspr
|
|
,o.plnt
|
|
,o.promo
|
|
,o.return_reas
|
|
,o.terms
|
|
,o.bill_cust
|
|
,o.ship_cust
|
|
,o.dsm
|
|
,o.part
|
|
,o.fs_line
|
|
,o.r_currency
|
|
,o.r_rate
|
|
,o.c_currency
|
|
,o.c_rate
|
|
,o.calc_status
|
|
,o.flag
|
|
,o.odate
|
|
,o.oseas
|
|
,o.rdate
|
|
,o.rseas
|
|
,o.sdate
|
|
,o.sseas
|
|
)
|
|
SELECT COUNT(*) from merge_deff
|