Snowflake中基于两个数据集实现ID存在标识的CTE编写问题
Snowflake ID存在性标识CTE编写方案
前提说明
现有两张数据表:
- DF1表:包含
ID、value两个字段 - DF2表:包含
ID、content两个字段
需求为给DF1新增id_exist字段,ID在DF2中存在则赋值为1,不存在则赋值为0。
实现代码
WITH result AS ( SELECT a.ID, a.value, CASE WHEN b.ID IS NOT NULL THEN 1 ELSE 0 END AS id_exist FROM DF1 a LEFT JOIN DF2 b ON a.ID = b.ID ) SELECT * FROM result;
输出结果
执行后返回结果如下:
| ID | value | id_exist |
|---|---|---|
| 001 | A | 0 |
| 002 | A | 1 |
| 003 | B | 1 |
| 004 | C | 0 |
补充说明
如果需要用模拟数据测试逻辑,可以直接运行以下完整代码:
WITH -- 模拟DF1数据 DF1 AS ( SELECT '001' ID, 'A' value UNION ALL SELECT '002' ID, 'A' value UNION ALL SELECT '003' ID, 'B' value UNION ALL SELECT '004' ID, 'C' value ), -- 模拟DF2数据 DF2 AS ( SELECT '002' ID, 'walter' content UNION ALL SELECT '003' ID, 'hank' content ), result AS ( SELECT a.ID, a.value, CASE WHEN b.ID IS NOT NULL THEN 1 ELSE 0 END AS id_exist FROM DF1 a LEFT JOIN DF2 b ON a.ID = b.ID ) SELECT * FROM result;
内容的提问来源于stack exchange,提问作者John Thomas
相关产品推荐
相关产品推荐

