Это правильный оператор слияния? Если это не так, пожалуйста, сообщите мне.
MERGE INTO Table1 tgt
USING Table2 src
ON (src.ec tgt.ec
AND src.yyyymm = tgt.yyyymm)
WHEN MATCHED THEN
UPDATE
SET
column3 = src.column3,
column5 = src.column5
WHEN NOT MATCHED THEN
INSERT
( ec, yyyymm, column1, column2, column3, column4, column5, column6)
VALUES (
src.ec, src.yyyymm, column1 = null, column2 = 0,
src.column3, column4 = 0, src.column5, column6 = null
);
Сообщение об ошибке было бы полезно. Что должен делать
column1 = null
? Если вы хотите вставить NULL, вы можете либо опустить столбец в списке VALUES, либо указатьNULL
безcolumn1 =
(те же правила, что и при традиционной вставке).Мне нужно указать значения столбца null и 0? Как это будет работать тогда?
VALUES ( src.ec, src.yyyymm, null, 0, src.column3, 0, src.column5, null );
Это не обновление, это обычная вставкаобновить и вставить оба
У меня меньше столбцов в источнике, чем в целевой таблице. Не могли бы вы рассказать мне, как это будет работать?
Он просто вставляет указанное значение (NULL или 0). Если целевой столбец отсутствует в списке значений, по умолчанию он равен NULL (или значению по умолчанию, определенному для этого столбца).