diff --git a/routes/scale/gen_scale.sql b/routes/scale/gen_scale.sql index 2a1e6db..c079395 100644 --- a/routes/scale/gen_scale.sql +++ b/routes/scale/gen_scale.sql @@ -2,6 +2,7 @@ DO $func$ DECLARE _clist text; + _clist_vol text; _clist_inc text; _ytdbody text; _order_date text; @@ -24,7 +25,7 @@ SELECT (SELECT cname FROM fc.target_meta WHERE appcol = 'ship_date') INTO _ship_ SELECT (SELECT cname FROM fc.target_meta WHERE appcol = 'order_status') INTO _order_status; SELECT (SELECT cname FROM fc.target_meta WHERE appcol = 'units') INTO _units_col; SELECT (SELECT cname FROM fc.target_meta WHERE appcol = 'value') INTO _value_col; --------------------------all columns except value and units-------------------------------- +-------------------------all columns ------------------------------------------------------ SELECT string_agg('o.'||format('%I',cname),E'\n ,' ORDER BY opos ASC) INTO @@ -33,6 +34,23 @@ FROM fc.target_meta WHERE func NOT IN ('version'); +-------------------------all columns except scale------------------------------------------- +SELECT + string_agg( + --create the column reference + 'o.'||format('%I',cname)|| + CASE WHEN appcol IN ('units', 'value', 'cost') THEN ' * vscale.factor' ELSE '' END, + --delimiter + E'\n ,' + --sort column ordinal + ORDER BY opos ASC + ) +INTO + _clist_vol +FROM + fc.target_meta +WHERE + func NOT IN ('version'); SELECT ---------$$app_req$$ will hold the request body-------------------- @@ -57,8 +75,15 @@ WHERE vscale AS ( SELECT app_vincr AS target_increment - ,sum($$||_units_col||') AS '||units||$$ + ,sum($$||_units_col||') AS units'||$$ ,app_vincr/sum($$||_units_col||$$) factor +) +,volume AS ( +SELECT + $$||_clist_vol||$$ +FROM + baseline + CROSS JOIN vscale )$$ INTO _sql;