На самом деле, вы можете использовать один запрос с условной логикой IIF
без какого-либо предложения WHERE
:
UPDATE UpdateTable UT
INNER JOIN ActualTable AT ON AT.Id = UT.Id
SET AT.[Column 1] = IIF(UT.[Column 1] IS NOT NULL, UT.[Column 1], AT.[Column 1]),
AT.[Column 2] = IIF(UT.[Column 2] IS NOT NULL, UT.[Column 2], AT.[Column 2]),
AT.[Column 3] = IIF(UT.[Column 3] IS NOT NULL, UT.[Column 3], AT.[Column 3]),
...other columns...
;
Как упомянуто в своем комментарии @ June7, вам нужно создать 20 операторов обновлений следующим образом
Update AT SET AT.[ColumnName] = UT.[ColumnName]
From UpdateTable UT INNER JOIN ActualTable AT
On AT.Id = UT.Id
WHERE UT.[ColumnName] is not NULL
Как видите, 20 операторов будут почти идентичны, за исключением имени столбца. Это позволяет легко ускорить решение с помощью одной из следующих опций