Оператор слияния в Teradata

avatar
Abdullah
9 августа 2021 в 01:43
144
0
0

Это правильный оператор слияния? Если это не так, пожалуйста, сообщите мне.

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
);
Источник
dnoeth
9 августа 2021 в 07:47
0

Сообщение об ошибке было бы полезно. Что должен делать column1 = null? Если вы хотите вставить NULL, вы можете либо опустить столбец в списке VALUES, либо указать NULL без column1 = (те же правила, что и при традиционной вставке).

Abdullah
9 августа 2021 в 13:54
0

Мне нужно указать значения столбца null и 0? Как это будет работать тогда?

dnoeth
9 августа 2021 в 19:11
0

VALUES ( src.ec, src.yyyymm, null, 0, src.column3, 0, src.column5, null ); Это не обновление, это обычная вставка

Abdullah
10 августа 2021 в 15:32
0

обновить и вставить оба

Abdullah
11 августа 2021 в 20:52
0

У меня меньше столбцов в источнике, чем в целевой таблице. Не могли бы вы рассказать мне, как это будет работать?

dnoeth
12 августа 2021 в 08:01
0

Он просто вставляет указанное значение (NULL или 0). Если целевой столбец отсутствует в списке значений, по умолчанию он равен NULL (или значению по умолчанию, определенному для этого столбца).

Ответы (0)