Snowflake中按特定条件连接两表实现Person_id加1匹配
Snowflake 偏移规则两表关联实现方案
核心实现逻辑
关联规则是B表Person_id比A表对应行大1,不需要提前做字段预处理,直接在JOIN的ON条件中写入偏移匹配规则即可。
可直接运行的SQL代码
SELECT A.Person_id, A.Name, B.Hourly FROM A -- 用LEFT JOIN保证A表所有行都保留,匹配不到的Hourly返回NULL LEFT JOIN B ON B.Person_id = A.Person_id + 1;
样例数据匹配验证
对应提供的测试数据,执行后匹配逻辑完全符合预期:
- A表Person_id=0(John)→ 匹配B表Person_id=1 → Hourly=20
- A表Person_id=1(Patel)→ 匹配B表Person_id=2 → Hourly=30
- A表Person_id=2(Aaron)→ 匹配B表Person_id=3 → Hourly=25
输出结果和期望结构完全一致。
注意事项
- 如果能确认A表所有行的
Person_id + 1都能在B表找到对应记录,也可以把LEFT JOIN替换为INNER JOIN,查询效率会略高。 - 不要把
B.Person_id = A.Person_id + 1这个条件写到WHERE子句中,否则会导致LEFT JOIN退化为INNER JOIN,丢失A表中未匹配到B表的记录。
内容的提问来源于stack exchange,提问作者CasperCodes
相关产品推荐
相关产品推荐

