71 lines
1.7 KiB
MySQL
71 lines
1.7 KiB
MySQL
|
WITH
|
||
|
target AS (select replace_new_mold new_mold)
|
||
|
,basemix AS (
|
||
|
SELECT
|
||
|
part,
|
||
|
stlc,
|
||
|
colc,
|
||
|
colgrp,
|
||
|
coltier,
|
||
|
sizc,
|
||
|
SUM(value_usd) value_usd
|
||
|
FROM
|
||
|
rlarp.osm_pool o
|
||
|
LEFT OUTER JOIN rlarp.itemmv i ON
|
||
|
i.item = o.part
|
||
|
WHERE
|
||
|
-----------------scenario----------------------------
|
||
|
where_clause
|
||
|
-----------------additional params-------------------
|
||
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||
|
AND order_date <= ship_date
|
||
|
GROUP BY
|
||
|
part,
|
||
|
stlc,
|
||
|
colc,
|
||
|
colgrp,
|
||
|
coltier,
|
||
|
sizc
|
||
|
)
|
||
|
--SELECT * FROM basemix
|
||
|
,tag AS (
|
||
|
SELECT
|
||
|
b.part
|
||
|
,b.value_usd
|
||
|
--,b.stlc
|
||
|
--,b.sizc
|
||
|
--,b.colgrp
|
||
|
--,b.coltier
|
||
|
--,b.colc
|
||
|
,i.item
|
||
|
,CASE WHEN b.sizc = i.sizc THEN '1' ELSE '0' END||
|
||
|
CASE WHEN i.aplnt = 'I' THEN '0' ELSE '1' END||
|
||
|
CASE WHEN b.colgrp = i.colgrp THEN '1' ELSE '0' END||
|
||
|
CASE WHEN b.coltier = i.coltier THEN '1' ELSE '0' END||
|
||
|
CASE WHEN b.colc = i.colc THEN '1' ELSE '0' END||
|
||
|
CASE WHEN substring(b.part,9,12) = substring(i.item,9,12) THEN '1' ELSE 0 END fit
|
||
|
FROM
|
||
|
basemix b
|
||
|
LEFT OUTER JOIN rlarp.itemmv i ON
|
||
|
i.stlc = (SELECT new_mold FROM target)
|
||
|
)
|
||
|
--SELECT * FROM tag
|
||
|
,rsort AS (
|
||
|
SELECT
|
||
|
part,
|
||
|
value_usd,
|
||
|
item swap,
|
||
|
fit,
|
||
|
ROW_NUMBER() OVER (PARTITION BY tag.part ORDER BY fit DESC) ranked
|
||
|
FROM
|
||
|
tag
|
||
|
ORDER BY
|
||
|
part
|
||
|
,fit desc
|
||
|
)
|
||
|
SELECT
|
||
|
json_agg(row_to_json(rsort)) x
|
||
|
FROM
|
||
|
rsort
|
||
|
WHERE
|
||
|
ranked = 1
|