Access 2013 - обновление таблицы данных с различными критериями для каждого столбца

Вероятно, много, но начните с B-дерева.

0
задан June7 18 January 2019 в 19:59
поделиться

2 ответа

На самом деле, вы можете использовать один запрос с условной логикой 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...
;
0
ответ дан Parfait 18 January 2019 в 19:59
поделиться

Как упомянуто в своем комментарии @ 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 операторов будут почти идентичны, за исключением имени столбца. Это позволяет легко ускорить решение с помощью одной из следующих опций

  • Создать динамический SQL-запрос, которому вы передаете имя столбца из своего кода
  • Скопируйте и вставьте тот же запрос 20 раз в текстовый редактор и просто заменить имя столбца
0
ответ дан Gouda 18 January 2019 в 19:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: