diff --git a/procs/single_price_call.ms.sql b/procs/single_price_call.ms.sql index b9284bd..82323b7 100644 --- a/procs/single_price_call.ms.sql +++ b/procs/single_price_call.ms.sql @@ -499,45 +499,38 @@ BEGIN SELECT 'Target Calculation' AS label, ( - SELECT - ----------------------label------------------------------------------------ - CASE WHEN value <> '' THEN RTRIM(SUBSTRING(value,1,18)) ELSE 'No Target' END AS label, - ----------------------value------------------------------------------------ - CASE WHEN value <> '' THEN - TRY_CAST(SUBSTRING(value,23,7) AS NUMERIC(20,5)) - + CASE SUBSTRING(value,19,1) WHEN '+' THEN 0 ELSE -1 END - ELSE 0 END AS value, - ----------------------type------------------------------------------------- - CASE WHEN value <> '' THEN - CASE SUBSTRING(value,19,1) WHEN '+' THEN 'currency' ELSE 'Percent' END - ELSE '' END AS type, - ----------------------note------------------------------------------------- - CASE WHEN value <> '' THEN - CASE SUBSTRING(value,19,1) WHEN '+' THEN 'Price' ELSE 'Premium' END - ELSE '' END AS note - FROM @queue q - OUTER APPLY OPENJSON(q.expl, '$.target_math') - WITH (value NVARCHAR(MAX) '$') - FOR JSON PATH - ) AS details - - - UNION ALL - - -- Target Price - SELECT - 'Target Total' AS label, - ( - SELECT - ----------------------label------------------------------------------------ - 'Price' AS label, - ----------------------value------------------------------------------------ - tprice AS value, - ----------------------type------------------------------------------------- - 'currency' AS type, - ----------------------note------------------------------------------------- - '' AS note - FROM @queue q + SELECT * FROM ( + SELECT + ----------------------label------------------------------------------------ + CASE WHEN value <> '' THEN RTRIM(SUBSTRING(value,1,18)) ELSE 'No Target' END AS label, + ----------------------value------------------------------------------------ + CASE WHEN value <> '' THEN + TRY_CAST(SUBSTRING(value,23,7) AS NUMERIC(20,5)) + + CASE SUBSTRING(value,19,1) WHEN '+' THEN 0 ELSE -1 END + ELSE 0 END AS value, + ----------------------type------------------------------------------------- + CASE WHEN value <> '' THEN + CASE SUBSTRING(value,19,1) WHEN '+' THEN 'currency' ELSE 'Percent' END + ELSE '' END AS type, + ----------------------note------------------------------------------------- + CASE WHEN value <> '' THEN + CASE SUBSTRING(value,19,1) WHEN '+' THEN 'Price' ELSE 'Premium' END + ELSE '' END AS note + FROM @queue q + OUTER APPLY OPENJSON(q.expl, '$.target_math') + WITH (value NVARCHAR(MAX) '$') + UNION ALL + SELECT + ----------------------label------------------------------------------------ + 'Price' AS label, + ----------------------value------------------------------------------------ + tprice AS value, + ----------------------type------------------------------------------------- + 'currency' AS type, + ----------------------note------------------------------------------------- + 'Total' AS note + FROM @queue q + ) x FOR JSON PATH ) AS details diff --git a/procs/single_price_call.pg.sql b/procs/single_price_call.pg.sql index 4c21017..4ad7d76 100644 --- a/procs/single_price_call.pg.sql +++ b/procs/single_price_call.pg.sql @@ -485,42 +485,40 @@ BEGIN jsonb_build_object( 'label', 'Target Calculation', 'details', - ( - SELECT - jsonb_agg( - jsonb_build_object( - ----------------------label------------------------------------------------ - 'label',CASE WHEN value <> '' THEN RTRIM(SUBSTRING(value,1,18)) ELSE 'No Target' END, - ----------------------value------------------------------------------------ - 'value',CASE WHEN value <> '' THEN - SUBSTRING(value,23,7)::NUMERIC(20,5) + - CASE SUBSTRING(value,19,1) WHEN '+' THEN 0 ELSE -1 END - ELSE - 0 - END, - ----------------------type------------------------------------------------- - 'type', CASE WHEN value <> '' THEN - CASE SUBSTRING(value,19,1) - WHEN '+' THEN 'currency' - ELSE 'Percent' - END - ELSE '' END, - ----------------------note------------------------------------------------- - 'note',CASE WHEN value <> '' THEN - CASE SUBSTRING(value,19,1) - WHEN '+' THEN 'Price' - ELSE 'Premium' - END - ELSE '' END - ) - ) - FROM jsonb_array_elements_text(COALESCE(_tmath,'{}'::jsonb)) ae - ) - ), - jsonb_build_object( - 'label', 'Target Total', - 'details', - jsonb_build_object('label','Price','value',_tprice,'type','currency','note','') + -- jsonb_build_array( + ( + SELECT + jsonb_agg( + jsonb_build_object( + ----------------------label------------------------------------------------ + 'label',CASE WHEN value <> '' THEN RTRIM(SUBSTRING(value,1,18)) ELSE 'No Target' END, + ----------------------value------------------------------------------------ + 'value',CASE WHEN value <> '' THEN + SUBSTRING(value,23,7)::NUMERIC(20,5) + + CASE SUBSTRING(value,19,1) WHEN '+' THEN 0 ELSE -1 END + ELSE + 0 + END, + ----------------------type------------------------------------------------- + 'type', CASE WHEN value <> '' THEN + CASE SUBSTRING(value,19,1) + WHEN '+' THEN 'currency' + ELSE 'Percent' + END + ELSE '' END, + ----------------------note------------------------------------------------- + 'note',CASE WHEN value <> '' THEN + CASE SUBSTRING(value,19,1) + WHEN '+' THEN 'Price' + ELSE 'Premium' + END + ELSE '' END + ) + ) + FROM jsonb_array_elements_text(COALESCE(_tmath,'{}'::jsonb)) ae + ) + ||jsonb_build_object('label','Price','value',_tprice,'type','currency','note','Total') + -- ) ), ------------------------------------------ -- history