WITH
mseq AS (
    SELECT * FROM 
    (
        VALUES
        ('Jun',1,6,-1)
        ,('Jul',2,7,-1)
        ,('Aug',3,8,-1)
        ,('Sep',4,9,-1)
        ,('Oct',5,10,-1)
        ,('Nov',6,11,-1)
        ,('Dec',7,12,-1)
        ,('Jan',8,1,0)
        ,('Feb',9,2,0)
        ,('Mar',10,3,0)
        ,('Apr',11,4,0)
        ,('May',12,5,0)
    ) x(m,s,cal,yr)
)
,alldates AS (
    SELECT  
        shipgrp
        ,to_char(orderdate,'Mon') orderm
        ,extract(month FROM age(requestdate,orderdate)) rmo
        ,(sum((shipdate - requestdate)* (fb_val_loc * r_rate))/sum(fb_val_loc * r_rate))::int wav_lag
        --,sum(fb_val_loc * r_rate) value_usd
    FROM
        rlarp.osm
    WHERE
        adj_orderdate >= '2017-06-01'
        AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
        AND adj_orderdate <= adj_shipdate
        AND fspr IS NOT NULL
    GROUP BY
        shipgrp
        ,to_char(orderdate,'Mon')
        ,extract(month FROM age(requestdate,orderdate))
    HAVING
        sum(fb_val_loc * r_rate) <> 0
)
,lag AS (
    SELECT 
        shipgrp
        ,orderm
        ,rmo
        ,wav_lag
    FROM
        alldates 
    ORDER BY 
        shipgrp
        ,orderm
        ,rmo
)
,opord AS (
SELECT  
    shipgrp
    ,orderdate
    ,requestdate
    ,shipdate
    ,to_char(orderdate,'Mon') orderm
    ,extract(month FROM age(requestdate,orderdate)) rmo
    ,sum(fb_val_loc * r_rate) value_usd
FROM
    rlarp.osm
WHERE
    calc_status NOT IN ('CANCELED','CLOSED')
GROUP BY
    shipgrp
    ,orderdate
    ,requestdate
    ,shipdate
    ,to_char(orderdate,'Mon')
    ,extract(month FROM age(requestdate,orderdate))
ORDER BY
    value_usd DESC
)
,rbld AS (
SELECT
    o.shipgrp
    ,o.orderdate
    ,o.requestdate
    ,o.shipdate
    ,o.orderm
    ,o.rmo
    ,o.value_usd
    ,lag.wav_lag
    ,o.requestdate + lag.wav_lag + 15 rship
FROM
    opord o
    LEFT OUTER JOIN lag ON
        lag.shipgrp = o.shipgrp
        AND lag.orderm = o.orderm
        AND lag.rmo = o.rmo
ORDER BY
    value_usd desc
)
select 
    sum(value_usd) filter (where rship >= '2019-04-01')
    ,sum(value_usd) filter (where rship < '2019-04-01')
from 
    rbld 
where 
    shipdate < '2019-04-01'