From 5fad9bc7770c04c89b0a3d40022d5512919873f2 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Sun, 27 Jul 2025 23:34:30 -0400 Subject: [PATCH] commit: 2025-07-27 23:34:30 --- sql/make_hist.ms.sql | 63 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/sql/make_hist.ms.sql b/sql/make_hist.ms.sql index 20b938f..c5bae5d 100644 --- a/sql/make_hist.ms.sql +++ b/sql/make_hist.ms.sql @@ -45,7 +45,9 @@ SELECT FROM json_rows GROUP BY customer, mold ) -SELECT * INTO #lastprice FROM onerow +SELECT * INTO pricing.lastprice FROM onerow + +CREATE UNIQUE INDEX lastprice_cust_mold ON pricing.lastprice(customer, mold); SELECT count(*) FROM rlarp.osm_stack o INNER JOIN #lastprice l ON l.customer = o.customer AND o.mold = l.mold @@ -66,7 +68,7 @@ SELECT j.quoten FROM rlarp.osm_stack o - LEFT OUTER JOIN #lastprice lp ON + LEFT OUTER JOIN pricing.lastprice lp ON lp.customer = o.customer AND lp.mold = o.mold CROSS APPLY OPENJSON(lp.part_stats) AS p -- unpacks part keys @@ -81,3 +83,60 @@ FROM WHERE o.customer = 'ALTMAN PLANTS' AND o.mold = 'XPR15CS1' + AND o.ordnum = 935360 + +WITH exploded AS ( + SELECT + lp.customer, + lp.mold, + p.[key] AS part_key, + j.qty, + j.price, + j.odate, + j.ordnum, + j.quoten, + CASE WHEN p.[key] = o.part COLLATE Latin1_General_BIN2 THEN 1 ELSE 0 END AS is_exact_match, + ROW_NUMBER() OVER (PARTITION BY lp.customer, lp.mold ORDER BY j.odate DESC) AS rn_most_recent + FROM rlarp.osm_stack o + LEFT JOIN pricing.lastprice lp ON lp.customer = o.customer AND lp.mold = o.mold + CROSS APPLY OPENJSON(lp.part_stats) AS p + CROSS APPLY OPENJSON(p.value) + WITH ( + qty FLOAT, + price FLOAT, + odate DATE, + ordnum INT, + quoten INT + ) AS j + WHERE + o.customer = 'ALTMAN PLANTS' + AND o.mold = 'XPR15CS1' + AND o.ordnum = 935360 +), +tagged AS ( + SELECT + part_key, + qty, + price, + odate, + ordnum, + quoten, + IIF(is_exact_match = 1, 1, NULL) AS is_exact_match, + IIF(rn_most_recent = 1, 1, NULL) AS is_most_recent + FROM exploded +) +--SELECT * FROM taggeg +SELECT ( + SELECT + part_key AS [key], + qty, + price, + odate, + ordnum, + quoten, + is_exact_match, + is_most_recent + FROM tagged + FOR JSON PATH, INCLUDE_NULL_VALUES +) AS updated_json_array; +