271 lines
8.4 KiB
SQL
271 lines
8.4 KiB
SQL
WITH
|
|
newc AS (
|
|
SELECT * FROM (VALUES
|
|
('A GARDEN CENTER','30053 - SKYE SAWYER'),
|
|
('FILANOWSKI & SONS','10042 - JEREMY RHAULT'),
|
|
('GIESEKE ENTERPRISES','10041 - TAMARA RISKEN'),
|
|
('HUNTER ROAD GREENHOUSES','40039 - DAVE BODO'),
|
|
('JAMPLAST INC','13027 - STEVE RUSTEBERG'),
|
|
('MOUNT PLYMOUTH GREENHOUSES','10046 - DUSTIN KUYKENDOLL 2'),
|
|
('PINCKARD PLANT FARM INC','10041 - TAMARA RISKEN'),
|
|
('SHERMAN PLASTICS','13027 - STEVE RUSTEBERG'),
|
|
('SPRING VALLEY NURSERY','12028 - JACOB WILKINSON'),
|
|
('A&R SPADA FARMS LLC','30053 - SKYE SAWYER'),
|
|
('CI FARMS LLC','30054 - JASON MOTTIN'),
|
|
('GOLDEN EAGLE TREES','40042 - TOM MORRIS'),
|
|
('TSC NURSERY SALES LTD','40042 - TOM MORRIS')
|
|
) x(orphan,rep)
|
|
)
|
|
,profile AS (
|
|
SELECT * FROM rlarp.osm WHERE shipgrp IN (select distinct orphan FROM newc ) AND oseas >= 2015
|
|
)
|
|
-- SELECT * FROM profile
|
|
,checkc AS (
|
|
SELECT shipgrp, min(oseas) oseas FROM profile GROUP BY shipgrp
|
|
)
|
|
-- select * from checkc
|
|
-- SELECT cust, sum(fb_qty) FROM newc LEFT OUTER JOIN profile ON shipgrp = cust GROUP by cust
|
|
----grouped prices-------------
|
|
,npgrp AS (
|
|
SELECT
|
|
o.bill_dba
|
|
,o.ship_dba
|
|
,o.dsm
|
|
,i.partgroup
|
|
,i.pricegroup
|
|
,o.part
|
|
,o.odate
|
|
,o.qtyord
|
|
,i.nwht * CASE WHEN i.nwun = 'KG' THEN 2.2 ELSE 1 END lbs
|
|
,i.mpck pltq
|
|
,ROUND(o.sales_usd / o.qty,5) price
|
|
,(o.pricing->>'guidance_price')::NUMERIC guidance
|
|
,(o.pricing->>'floor' )::numeric(15,5) floor
|
|
,(o.pricing->>'ceiling')::numeric(15,5) ceiling
|
|
,(o.pricing->>'uselimits')::boolean uselimits
|
|
FROM
|
|
rlarp.osm_stack o
|
|
LEFT OUTER JOIN "CMS.CUSLG".itemm i ON
|
|
i.item = o.part
|
|
INNER JOIN checkc c ON
|
|
c.shipgrp = o.customer
|
|
AND c.oseas = o.oseas
|
|
WHERE
|
|
VERSION = 'Actual'
|
|
-- AND o.oseas >= 2018
|
|
AND calc_status <> 'CANCELED'
|
|
AND o.fs_line = '41010'
|
|
AND o.part <> ''
|
|
AND substring(o.glec,1,1) <= '2'
|
|
AND o.qty <> 0
|
|
AND o.sseas IS NOT NULL
|
|
-- AND ROUND(o.sales_usd / o.qty,5)
|
|
-- AND customer in (select distinct renamed FROM newc )
|
|
GROUP BY
|
|
o.bill_dba
|
|
,o.ship_dba
|
|
,o.dsm
|
|
,i.partgroup
|
|
,i.pricegroup
|
|
,o.part
|
|
,o.odate
|
|
,o.qtyord
|
|
,o.pounds
|
|
,o.pallets
|
|
,ROUND(o.sales_usd / o.qty,5)
|
|
,i.nwht * CASE WHEN i.nwun = 'KG' THEN 2.2 ELSE 1 END
|
|
,i.mpck
|
|
,(o.pricing->>'guidance_price')::NUMERIC
|
|
,(o.pricing->>'floor' )::numeric(15,5)
|
|
,(o.pricing->>'ceiling')::numeric(15,5)
|
|
,(o.pricing->>'uselimits')::boolean
|
|
)
|
|
SELECT * FROM npgrp
|
|
-- ----sequenced for most recent price------------
|
|
-- ,nseq AS (
|
|
-- SELECT
|
|
-- bill_dba
|
|
-- ,ship_dba
|
|
-- ,part
|
|
-- ,odate
|
|
-- ,qtyord
|
|
-- ,lbs
|
|
-- ,pltq
|
|
-- ,price
|
|
-- ,guidance
|
|
-- ,floor
|
|
-- ,ceiling
|
|
-- ,uselimits
|
|
-- ,row_number() OVER (PARTITION BY bill_dba, ship_dba, part ORDER BY odate desc) rn
|
|
-- ,round(avg(price) over (PARTITION BY bill_dba, ship_dba, part),5) avgprice
|
|
-- FROM
|
|
-- npgrp
|
|
-- )
|
|
-- -- SELECT * FROM seq WHERE rn = 1
|
|
-- ,ngrp AS (
|
|
-- SELECT
|
|
-- o.account
|
|
-- ,o.shipgrp
|
|
-- ,o.chan
|
|
-- ,o.dsm
|
|
-- ,i.partgroup
|
|
-- ,i.pricegroup
|
|
-- ,o.part
|
|
-- ,o.glec
|
|
-- ,o.oseas
|
|
-- -- ,o.odate
|
|
-- ,og.sortmo omon
|
|
-- ,o.sseas
|
|
-- -- ,o.sdate
|
|
-- ,sg.sortmo smon
|
|
-- -- ,o.calc_status
|
|
-- ,ROUND(sum(fb_qty * lbs),5) lbs
|
|
-- ,ROUND(sum(fb_qty),2) qty
|
|
-- ,ROUND(sum(fb_val_loc * r_rate),2) sales_usd
|
|
-- ,ROUND(sum(fb_cst_loc_cur * c_rate),2) cost_curstd_usd
|
|
-- FROM
|
|
-- profile o
|
|
-- LEFT OUTER JOIN rlarp.gld og ON
|
|
-- o.odate BETWEEN og.sdat and og.edat
|
|
-- LEFT OUTER JOIN rlarp.gld sg ON
|
|
-- o.sdate BETWEEN sg.sdat and sg.edat
|
|
-- LEFT OUTER JOIN "CMS.CUSLG".itemm i ON
|
|
-- i.item = o.part
|
|
-- WHERE
|
|
-- true
|
|
-- -- iter IN ('actuals','actuals_plug','copy')
|
|
-- AND fs_line = '41010'
|
|
-- AND substring(o.glec,1,1) <= '2'
|
|
-- AND o.calc_status <> 'CANCELED'
|
|
-- AND o.sseas IS NOT NULL
|
|
-- GROUP BY
|
|
-- o.account
|
|
-- ,o.shipgrp
|
|
-- ,o.chan
|
|
-- ,o.dsm
|
|
-- ,i.partgroup
|
|
-- ,i.pricegroup
|
|
-- ,o.part
|
|
-- ,o.glec
|
|
-- ,o.oseas
|
|
-- -- ,o.odate
|
|
-- ,og.sortmo
|
|
-- ,o.sseas
|
|
-- -- ,o.sdate
|
|
-- ,sg.sortmo
|
|
-- -- ,o.calc_status
|
|
-- )
|
|
-- -- SELECT * FROM grp
|
|
-- ,nguid AS (
|
|
-- SELECT
|
|
-- grp.account
|
|
-- ,grp.shipgrp
|
|
-- ,grp.chan
|
|
-- ,r.repp dsm
|
|
-- ,r.director
|
|
-- ,grp.shipgrp||'.'||r.repp lu
|
|
-- -- ,grp.partgroup
|
|
-- -- ,grp.pricegroup
|
|
-- ,grp.part
|
|
-- -- ,grp.glec
|
|
-- ,2026 oseas
|
|
-- ,grp.omon
|
|
-- -- ,grp.odate
|
|
-- ,(2026- grp.oseas) + grp.sseas sseas
|
|
-- ,grp.smon
|
|
-- -- ,grp.sdate
|
|
-- ,grp.lbs
|
|
-- ,grp.qty
|
|
-- ,grp.sales_usd
|
|
-- ,CASE WHEN round(grp.sales_usd/grp.qty,5) = 0 THEN null ELSE round(grp.sales_usd/grp.qty,5) END hist_price
|
|
-- ,grp.cost_curstd_usd
|
|
-- ,sum(grp.lbs) OVER (PARTITION BY shipgrp, dsm) shiplbs
|
|
-- ,CASE WHEN seq.floor = 0 THEN null else seq.floor END floor
|
|
-- ,CASE WHEN seq.ceiling = 0 THEN null else seq.ceiling END ceiling
|
|
-- ,seq.uselimits
|
|
-- ,seq.price
|
|
-- ,seq.avgprice
|
|
-- ,seq.pltq
|
|
-- ,ROUND(CASE WHEN seq.uselimits THEN
|
|
-- CASE
|
|
-- WHEN glec = '1NU' THEN
|
|
-- --if more than 8/24 pallets, use floor
|
|
-- CASE WHEN grp.qty >= 24*seq.pltq THEN seq.floor
|
|
-- -- if more than a pallet use the target price
|
|
-- ELSE CASE WHEN qtyord >= 8*seq.pltq THEN (seq.ceiling + seq.floor) / 2
|
|
-- -- if more than a pallet use the target price
|
|
-- ELSE CASE WHEN qtyord >= 2*seq.pltq THEN seq.ceiling
|
|
-- -- if more than a pallet use the target price
|
|
-- ELSE seq.ceiling * 1.05
|
|
-- END END END
|
|
-- ELSE
|
|
-- CASE WHEN pricegroup ~ '(Hanger|Dish)' THEN
|
|
-- --at least 1 pallets is lower limit
|
|
-- CASE WHEN qtyord >= 01*seq.pltq THEN seq.floor
|
|
-- --at least 2 pallets is mid range
|
|
-- ELSE CASE WHEN qtyord >= 0.5*seq.pltq THEN (seq.ceiling + seq.floor) / 2
|
|
-- --less than a pallet is upper + 15%
|
|
-- ELSE seq.ceiling
|
|
-- END END
|
|
-- ELSE
|
|
-- --at least 8 pallets is lower limit
|
|
-- CASE WHEN qtyord >= 08*seq.pltq THEN seq.floor
|
|
-- --at least 2 pallets is mid range
|
|
-- ELSE CASE WHEN qtyord >= 2*seq.pltq THEN (seq.ceiling + seq.floor) / 2
|
|
-- --at least 1 pallet is upper range
|
|
-- ELSE CASE WHEN qtyord >= 1*seq.pltq THEN seq.ceiling
|
|
-- --less than a pallet is upper + 15%
|
|
-- ELSE seq.ceiling * 1.15
|
|
-- END END END
|
|
-- END
|
|
-- END
|
|
-- ELSE
|
|
-- null
|
|
-- END,5) guid
|
|
-- FROM
|
|
-- ngrp grp
|
|
-- LEFT OUTER JOIN nseq seq ON
|
|
-- seq.ship_dba = grp.shipgrp
|
|
-- AND seq.bill_dba = grp.account
|
|
-- AND seq.part = grp.part
|
|
-- AND seq.rn = 1
|
|
-- LEFT OUTER JOIN rlarp.repc r ON
|
|
-- r.rcode = grp.dsm
|
|
-- )
|
|
-- ,orphans AS (
|
|
-- SELECT
|
|
-- account
|
|
-- ,shipgrp
|
|
-- ,chan
|
|
-- ,dsm
|
|
-- ,director
|
|
-- ,lu
|
|
-- --,partgroup
|
|
-- --,pricegroup
|
|
-- ,part
|
|
-- -- ,glec
|
|
-- ,oseas
|
|
-- ,omon
|
|
-- -- ,odate
|
|
-- ,sseas
|
|
-- ,smon
|
|
-- -- ,sdate
|
|
-- ,lbs
|
|
-- ,qty
|
|
-- ,sales_usd
|
|
-- ,hist_price
|
|
-- ,cost_curstd_usd
|
|
-- ,shiplbs
|
|
-- ,floor
|
|
-- ,ceiling
|
|
-- ,uselimits
|
|
-- ,price
|
|
-- ,avgprice
|
|
-- ,pltq
|
|
-- ,guid
|
|
-- ,least(hist_price, price, avgprice) lowest_last
|
|
-- ,least(hist_price, price, avgprice, floor) lowest_floor
|
|
-- FROM
|
|
-- nguid
|
|
-- )
|