Проблема
Таблица 1:
| KeyColumn | DataColumn1 | DataColumn2|
01 0.1 0.2
02 0.13 0.41
Таблица 2:
| anotherKey | DataColumn1 | DataColumn2|
A1 .15 1.2
A2 .25 23.1
Таблица 3:
|KeyColumn| anotherKey |
01 A1
02 A1
Учитывая ключ (A1 или A2), мне нужно обновить столбцы DataColumn1 и DataColumn2 в таблице 1 с соответствующими значениями в таблице 2.
Таким образом, таблица1 может обновить х строк, как показано в приведенных выше данных. Если я хочу обновить A1, обновить строки 01 и 02
(поэтому значения в таблице 1 будут равны 0,15 для datacolumn1 и 1.2 для datacolumn2 для обоих ключей 01 и 02)
Что я пробовал до сих пор:
MERGE table1
USING (SELECT *
FROM table2
LEFT OUTER JOIN table3
on table2.anotherKey = table3.anotherKey
WHERE table2.anotherKey = 'A1') tmpTable
ON
table1.keyColumn = tmpTable.keyColumn
WHEN MATCHED THEN
UPDATE
SET table1.DataColumn1 = tmpTable.DataColumn1
,table1.DataColumn2 = tmpTable.DataColumn2;
Вопросы:
- Разрешено ли это? Использовать выбор в инструкции using? Я получаю синтаксическую ошибку в строке 1
- Есть ли лучший способ сделать это? Я делаю это более сложным, чем это должно быть?
- Что я делаю неправильно?
и ошибка:
Msg 102, уровень 15, состояние 1, строка 1 Неверный синтаксис рядом с 'a'. Msg 102, уровень 15, состояние 1, строка 12 Неверный синтаксис рядом с 'd'.