a formatted query would help:
UPDATE tblSpend
SET [Supplier Part #] = ISNULL(ts.[Supplier Part Number], '')
FROM
(
SELECT DISTINCT
tblSpend.[Hussmann Item #],
tmn.[ITEM NO],
ISNULL(tmn.[Supplier Part Number], N'') AS [Supplier Part Number],
tmn.Year,
tmn.[COMPANY NAME],
tblSpend.[Standard Supplier Name]
FROM
(
SELECT
CAST(REPLACE(REPLACE([ITEM NO], ' ', ''), '-', '') AS char(60)) AS [ITEM NO Clean],
[ITEM NO],
[COMPANY NAME],
Year,
[Supplier Part Number]
FROM tblMACOONew
) AS tmn
RIGHT OUTER JOIN tblSpend
ON tmn.[ITEM NO Clean] = CAST(REPLACE(REPLACE(tblSpend.[Hussmann Item #], ' ', ''), '-', '') AS char(60))
AND tmn.[COMPANY NAME] = tblSpend.[Standard Supplier Name]
WHERE (tmn.Year = '2024')
) AS ts
RIGHT OUTER JOIN tblSpend
ON ts.[Hussmann Item #] = tblSpend.[Hussmann Item #]
AND ts.[COMPANY NAME] = tblSpend.[Standard Supplier Name];
the right join return the rows from the join table that match the join condition and those that do not match includes the rows with null values for the left table. see:
https://commons.wikimedia.org/wiki/File%3ASQL_Joins.svg
as we don't know the input values and expected update value we can not help. if you converted the update to a select of the part number. then supplied sample data, and and the desired result, we could help.