diff --git a/route_sql/addmonth_vupd.sql b/route_sql/addmonth_vupd.sql index 69e465e..e150cac 100644 --- a/route_sql/addmonth_vupd.sql +++ b/route_sql/addmonth_vupd.sql @@ -399,17 +399,17 @@ WHERE ,pscale AS ( SELECT CASE - WHEN (SELECT coalesce(sum(value_loc),0) FROM volume) = 0 AND (SELECT sum(units) FROM volume) = 0 THEN 'both' - WHEN (SELECT coalesce(sum(value_loc),0) FROM volume) = 0 THEN 'cost' + WHEN (SELECT coalesce(sum(value_usd),0) FROM volume) = 0 AND (SELECT sum(units) FROM volume) = 0 THEN 'both' + WHEN (SELECT coalesce(sum(value_usd),0) FROM volume) = 0 THEN 'value' ELSE 'other' END zero_values ,CASE - WHEN (SELECT coalesce(sum(value_loc),0) FROM volume) = 0 AND (SELECT coalesce(sum(units),0) FROM volume) = 0 -- Split pincr evenly between rows. + WHEN (SELECT coalesce(sum(value_usd),0) FROM volume) = 0 AND (SELECT coalesce(sum(units),0) FROM volume) = 0 -- Split pincr evenly between rows. THEN (SELECT pincr::numeric FROM target) / (SELECT nullif(count(*),0) FROM volume) - WHEN (SELECT coalesce(sum(value_loc),0) FROM volume) = 0 -- Get a per-unit pincr value + WHEN (SELECT coalesce(sum(value_usd),0) FROM volume) = 0 -- Get a per-unit pincr value THEN (SELECT pincr::numeric FROM target) / (SELECT nullif(sum(units),0) FROM volume) ELSE -- Find percent change for existing value_loc - (SELECT pincr::numeric FROM target) / (SELECT nullif(sum(value_loc * r_rate),0) FROM volume) + (SELECT pincr::numeric FROM target) / (SELECT nullif(sum(value_usd),0) FROM volume) - 1 END factor ) -- select 'pscale', * from pscale @@ -448,12 +448,12 @@ SELECT ,0::numeric units ,round(CASE p.zero_values WHEN 'both' THEN p.factor / b.r_rate - WHEN 'cost' THEN b.units * p.factor / b.r_rate + WHEN 'value' THEN b.units * p.factor / b.r_rate WHEN 'other' THEN b.value_loc * p.factor END, 2) AS value_loc ,round(CASE p.zero_values WHEN 'both' THEN p.factor - WHEN 'cost' THEN b.units * p.factor + WHEN 'value' THEN b.units * p.factor WHEN 'other' THEN b.value_usd * p.factor END, 2) AS value_usd ,0::numeric cost_loc @@ -481,7 +481,7 @@ FROM CROSS JOIN pscale p CROSS JOIN log WHERE - p.factor <> 0 + abs(p.factor) > 0.00001 ) -- select 'price', * from price UNION ALL SELECT 'volume', * FROM volume --