Использование оператора Case для определения столбца для вставки в - PullRequest
0 голосов
/ 18 октября 2018

У меня есть данные, которые вставляются из одной таблицы в другую.Во время этой вставки происходят некоторые преобразования, происходящие с некоторыми данными.Одним из примеров является

SELECT COLUMN_NAME
CASE
    WHEN year(DATE_COLUMN) >= 1000 THEN (Insert into columnA of TARGET_TABLE)
    ELSE (Insert into columnB of TARGET_TABLE)
END
FROM SOURCE_TABLE

Существует много других столбцов, вставляемых в целевую таблицу из исходной таблицы, но то, будет ли дата помещена в столбец A или columnB, зависит от даты в DATE_COLUMN исходной таблицы.Как мне убедиться, что дата заполнена в правильном столбце целевой таблицы, следуя этому методу?

1 Ответ

0 голосов
/ 18 октября 2018

Вам нужно два CASE выражения, по одному для каждого столбца:

INSERT INTO target_table (col_name, column_a, column_b)
SELECT 
  column_name,
  CASE WHEN year(date_column) >= 1000 THEN some_column END,
  CASE WHEN year(date_column) < 1000 OR date_column IS NULL THEN some_column END
FROM source_table;
...