Обновление значений TableA на основе значений из TableB (несколько вариантов) - PullRequest
0 голосов
/ 04 июля 2018

У меня есть две таблицы:

           TableA
+************************************+
|Col1   | code    | Country | Value2 |
+************************************+
|Field1 | IN      | INDIA   | NA     |
|Field2 | CA      | CANADA  | NA     |
|Field3 | US      | USA     | NA     |
+************************************+

        TableB
+***************************+
|Field1  | Field2  | Field3 |
+***************************+
|1       | 4       |   IN   |
|2       | 5       |   CA   |
|3       | 6       |   -    |
+***************************+

Я пытаюсь обновить столбец Field3 в TableB, на основе значений из столбца Country в TableA

То есть: если Field3 в TableB имеет значение IN, то оно должно быть обновлено до India

или если Filed3 имеет значение CA, его следует обновить до Canada

и в третьем случае, если не найдено соответствующего значения, должно быть получено обновление до «NA» или «NotSpecified»

До сих пор я пытался обновить TableB, используя INNER JOIN:

UPDATE TableB SET TableB.Field3 = TableA.Country
FROM TableB INNER JOIN TableA ON TableB.Field3 = TableA.Code

Я действительно изо всех сил пытаюсь обновить таблицу на основе нескольких IF операторов? Должен ли я использовать CASE?

Любая помощь или предложения будут высоко оценены.

1 Ответ

0 голосов
/ 04 июля 2018

Используйте LEFT JOIN с ISNULL.

UPDATE TableB SET 
    Field3 = ISNULL(TableA.Country, 'NA')
FROM 
    TableB 
    LEFT JOIN TableA ON TableB.Field3 = TableA.Code

Использование LEFT JOIN не заставит все записи TableB объединиться с записью TableA, а ISNULL установит значение по умолчанию, если Code не существует в TableA .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...