From 82db9a4334c61d4bc0ed74eadc83de22853602fd Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Mon, 11 Aug 2025 12:00:08 -0400 Subject: [PATCH] populate something even if there is no record --- procs/single_price_call.ms.sql | 38 ++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/procs/single_price_call.ms.sql b/procs/single_price_call.ms.sql index 9fe7a0e..2d525c7 100644 --- a/procs/single_price_call.ms.sql +++ b/procs/single_price_call.ms.sql @@ -444,13 +444,17 @@ BEGIN 'History' AS label, ( SELECT + ----------------------label------------------------------------------------ CASE WHEN q.last_price IS NOT NULL THEN 'Last Sale: ' + ISNULL(CONVERT(varchar(10), q.last_date, 120), '') ELSE 'No Recent' END AS label, + ----------------------value------------------------------------------------ ISNULL(q.last_price, 0) AS value, + ----------------------type------------------------------------------------- 'currency' AS type, + ----------------------note------------------------------------------------- CASE WHEN q.last_price IS NOT NULL THEN CONCAT( @@ -466,7 +470,8 @@ BEGIN ELSE ' Ord# ' + ISNULL(q.last_order, '') END ) - ELSE NULL + ELSE + '' END AS note FOR JSON PATH -- array with one object (no WITHOUT_ARRAY_WRAPPER) ) AS details @@ -478,10 +483,10 @@ BEGIN 'List' AS label, ( SELECT - 'List:' + q.listcode AS label, - q.listprice AS value, + COALESCE('List:' + q.listcode,'No List') AS label, + COALESCE(q.listprice,0) AS value, 'currency' AS type, - q.list_relevance AS note + COALESCE(q.list_relevance,'') AS note FOR JSON PATH ) @@ -492,12 +497,23 @@ BEGIN 'Target Support' AS label, ( SELECT - RTRIM(SUBSTRING(value,1,18)) AS label, - TRY_CAST(SUBSTRING(value,23,7) AS NUMERIC(20,5)) - + CASE SUBSTRING(value,19,1) WHEN '+' THEN 0 ELSE -1 END AS value, - CASE SUBSTRING(value,19,1) WHEN '+' THEN 'currency' ELSE 'Percent' END AS type, - CASE SUBSTRING(value,19,1) WHEN '+' THEN 'Price' ELSE 'Premium' END AS note - FROM OPENJSON(q.expl, '$.target_math') + ----------------------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 @@ -510,7 +526,7 @@ BEGIN ( SELECT 'Price' AS label, - q.guidance_price AS value, + COALESCE(q.guidance_price,0) AS value, 'currency' AS type, q.guidance_reason AS note FOR JSON PATH