69 lines
1.5 KiB
SQL
69 lines
1.5 KiB
SQL
WITH
|
|
getj AS (
|
|
SELECT
|
|
(
|
|
SELECT
|
|
jsonb_build_object('mold',JSON_AGG(DISTINCT stlc)) doc
|
|
FROM
|
|
"CMS.CUSLG".itemm
|
|
WHERE
|
|
item ~ 'TUH10000A10B04'
|
|
) ||
|
|
(
|
|
SELECT
|
|
jsonb_build_object('cust',JSONB_AGG(DISTINCT c.dba))
|
|
FROM
|
|
rlarp.cust c
|
|
WHERE
|
|
c.dba ~ 'DIAMOND R'
|
|
) doc
|
|
)
|
|
,agg AS (
|
|
SELECT
|
|
gset
|
|
,(SELECT string_agg(ae.v,'.') FROM jsonb_array_elements_text(p.agglevel) ae(v)) agglvl
|
|
,season
|
|
,(select doc from getj) gdoc
|
|
FROM
|
|
rlarp.price_pool_dev p
|
|
WHERE
|
|
--gut the exact mold and actuals only
|
|
gset @> jsonb_build_object(
|
|
'mold',(SELECT doc->'mold'->>0 FROM getj),
|
|
'vers','A'
|
|
)
|
|
--pull either the exact customer or no customer
|
|
AND (
|
|
gset @> jsonb_build_object(
|
|
'cust',(SELECT doc->'cust'->>0 FROM getj)
|
|
)
|
|
OR NOT gset ? 'cust'
|
|
)
|
|
ORDER BY
|
|
agglevel ASC
|
|
)
|
|
,aggfinal AS (
|
|
SELECT
|
|
jsonb_build_object(
|
|
agg.agglvl,
|
|
jsonb_agg(gset || jsonb_build_object('season',season))
|
|
) data
|
|
,gdoc
|
|
FROM
|
|
agg
|
|
GROUP BY
|
|
agglvl
|
|
,gdoc
|
|
)
|
|
,final AS (
|
|
SELECT
|
|
public.jsonb_obj_aggc(data) data
|
|
, gdoc
|
|
FROM
|
|
aggfinal
|
|
GROUP BY
|
|
gdoc
|
|
)
|
|
--SELECT gdoc, jsonb_pretty(data) FROM final
|
|
SELECT gdoc, data FROM final
|