【问题标题】:Snowflake how to split a field having values separated with commas and add them separately to the target table each value in a single row?雪花如何拆分具有用逗号分隔的值的字段并将它们分别添加到目标表中的每个值在一行中?
【发布时间】:2021-03-10 15:11:13
【问题描述】:

我有一个字段可能包含如下值:

field_val = 'Val1, Val2';

所以使用merge into 命令,我需要拆分这些值并将它们分别添加为一行。

MERGE INTO target_table TT
    USING (SELECT FIELD_VAL, ID FROM SOURCE_TABLE) ST
    ON (TT.ID = ST.ID)
    WHEN NOT MATCHED THEN
    INSERT (ID, FIELD_VAL) VALUES (SOME_ID, ST.FIELD_VAL)

在这种情况下,我不希望他们添加的行是:23, 'Val1, Val2'

我想要的是将单独添加为单行:

23, 'Val1'

24, 'Val2'

【问题讨论】:

    标签: sql merge snowflake-cloud-data-platform


    【解决方案1】:

    您可以使用 LATERAL SPLIT_TO_TABLE 将数组拆分为一个表,但我认为您不能使用不同的 ID 添加它们。

    create or replace table target_Table (id number, v varchar);
    
    merge into target_Table t
    using (
    with source_table as (select 0 id, 'Val1, Val2' f )
    select id, trim(value) nv from source_table, 
    lateral SPLIT_TO_TABLE(f,',')
    ) s on t.id = s.id
    when not matched then
    insert (id, v) values ( id, nv  );
    
    select * from target_table;
    
    +----+------+
    | ID |  V   |
    +----+------+
    |  0 | Val1 |
    |  0 | Val2 |
    +----+------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多