Обновление с использованием дела с несколькими таблицами - PullRequest
0 голосов
/ 14 мая 2019

У меня есть две таблицы. Я хочу обновить table1, когда условие выполнено. Условие здесь состоит в том, чтобы проверить страну в table 2, а если она Mex, то умножить ставку, т.е. 0.5 на price.

Я написал следующий код

UPDATE table1
SET table1.Price = (SELECT *,
                           CASE table2.Country
                                WHEN 'CANADA' THEN (1 * table2.price)
                                WHEN 'MEXICO' THEN (0.5 * table2.price)
                                ELSE 0
                           END AS Price_Calc
                    FROM table2)
FROM table1;

Когда я запускаю это, выдает ошибку ниже

Сообщение 116, Уровень 16, Состояние 1, Строка 12
Может быть только одно выражение указывается в списке выбора, когда подзапрос не вводится с СУЩЕСТВУЕТ.

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Предполагая, что Таблица1 и Таблица2 связаны через идентификаторы:

UPDATE t1 SET t1.Price = t2.Price 
                    * CASE t2.Country 
                        WHEN 'CANADA' THEN 1. 
                        WHEN 'MEXICO' THEN .5
                        ELSE 0
                      END
FROM table1 t1
INNER JOIN table2 t2 ON t2.Id = t1.Id
;
0 голосов
/ 14 мая 2019

Попробуйте, как показано ниже

UPDATE t1
SET t1.table1.Price = (SELECT
                           CASE t2.Country
                                WHEN 'CANADA' THEN (1 * t2.price)
                                WHEN 'MEXICO' THEN (0.5 * t2.price)
                                ELSE 0
                           END AS Price_Calc
                    FROM table2 t2
                    WHERE t2.Id = t1.Id -- Here it is suggestion to update target 
                                        -- column based on relation if exists between 
                                        -- ur  tables

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