302 lines
7.6 KiB
MySQL
302 lines
7.6 KiB
MySQL
|
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
|