使用case语句确定要插入的列

时间:2018-10-18 20:25:36

标签: sql insert case snowflake

我有从一个表插入到另一个表的数据。在该插入过程中,某些数据转换为某些数据。一个例子是

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中的日期。按照这种方法,如何确定日期已填入目标表的正确列中?

1 个答案:

答案 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;