如何在Snowflake中将表NULL值替换为多值并拆分为多行
Snowflake月份NULL值拆分多记录实现方案
核心查询代码
假设你的原表名为your_table,可直接执行以下查询得到目标结果:
SELECT t.id, COALESCE(t.month, s.summer_month) AS month FROM your_table t LEFT JOIN LATERAL ( SELECT column1 AS summer_month FROM VALUES (7),(8) ) s ON t.month IS NULL ORDER BY id, month;
输出结果
运行后返回的数据集符合要求:
- id=a01,month=5
- id=a02,month=6
- id=b01,month=6
- id=b04,month=7
- id=b04,month=8
逻辑说明
- 仅
month为NULL的行才会关联到手动构造的(7),(8)夏季月份虚拟表,自动生成2条对应记录 - 非NULL的
month行不会触发关联,保留原行原数值不变 COALESCE函数用于合并字段值,优先取原表非空月份,空值场景取关联生成的夏季月份
可选:持久化修改原表
如果需要直接替换原表数据为目标格式,执行以下SQL即可:
CREATE OR REPLACE TABLE your_table AS SELECT t.id, COALESCE(t.month, s.summer_month) AS month FROM your_table t LEFT JOIN LATERAL ( SELECT column1 AS summer_month FROM VALUES (7),(8) ) s ON t.month IS NULL;
内容的提问来源于stack exchange,提问作者314mip
相关产品推荐
相关产品推荐

