基于 SQL/Snowflake 中两个数据集的条件逻辑

Conditional logic based on two datasets in SQL/Snowflake

所以我在数据库中有两个数据集

DF1

ID value
001    A
002    A
003    B
004    C

我还有如下其他数据集

ID     content
002    walter
003    hank

所以我想做的就是在 Snowflake 中创建一个 Common Table Expression(CTE),如果 DF1 中的 ID 出现在 DF2 中,那么一个新变量表示这个(1 或 0)

最终结果

ID value  id_exist
001    A         0
002    A         1
003    B         1
004    C         0
with DF1 as
(
    select * from (values (1, 'A'), (2, 'A'), (3, 'B'), (4, 'C')) as X(ID, VALUE)
),
DF2 as
(
    select ID, CONTENT from (values (2, 'Walter'), (3, 'Hank')) as X(ID, CONTENT)
)
select DF1.ID, DF1.VALUE, iff(DF2.ID is not null, 1, 0) as ID_EXISTS  from DF1 left join DF2 on DF1.ID = DF2.ID
;

如果想使用 CTE,您可以这样做:

    with cte1 as
    (select 1 as vcount, id
     from df2
    )
    select a.id, a.value, coalesce(b.vcount, 0) as id_exist
    from df1 a
    left join cte1 b
      on b.id = a.id