我有从一个表插入到另一个表的数据。在该插入过程中,某些数据转换为某些数据。一个例子是
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
还有许多其他列从源表插入到目标表中,但是日期是进入columnA还是columnB取决于源表的DATE_COLUMN中的日期。按照这种方法,如何确定日期已填入目标表的正确列中?
答案 0 :(得分:2)
您需要两个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;