diff --git a/new_targets/tables/lastpricedetail.ms.sql b/new_targets/tables/lastpricedetail.ms.sql index 809e41f..a8015ac 100644 --- a/new_targets/tables/lastpricedetail.ms.sql +++ b/new_targets/tables/lastpricedetail.ms.sql @@ -166,14 +166,26 @@ WITH exploded_flags AS ( ) --SELECT * FROM flag_json -- Step 3.4: Nest dss/dsq under each dataseg +-- Only keep the most recent dss/dsq per dataseg/version (prevents duplicate keys) ,seg_pieces AS ( SELECT customer, partgroup, dataseg, STRING_AGG(json_piece, ',') AS inner_json - FROM serialized_flags - WHERE flag IN ('dss', 'dsq') + FROM ( + SELECT sf.* + FROM ( + SELECT *, + ROW_NUMBER() OVER ( + PARTITION BY customer, partgroup, dataseg, flag + ORDER BY odate DESC, version DESC -- prefer most recent, then prefer 'Actual' over 'Quotes' + ) AS rn + FROM serialized_flags + WHERE flag IN ('dss', 'dsq') + ) sf + WHERE sf.rn = 1 + ) deduped GROUP BY customer, partgroup, dataseg ) --SELECT * FROM seg_pieces @@ -202,7 +214,7 @@ WITH exploded_flags AS ( -- Write final pricing history to pricing.lastpricedetail -------------------------------------------------------------------------------- INSERT INTO - pricing.lastpricedetail + pricing.lastpricedetail SELECT COALESCE(f.customer, s.customer) AS customer, COALESCE(f.partgroup, s.partgroup) AS partgroup,