如何在Snowflake SQL中基于result字段值重复指定字段查询结果?
在Snowflake SQL中根据指定字段值重复行数据
可以通过ARRAY_GENERATE_RANGE结合LATERAL FLATTEN的方式实现需求,这是Snowflake中高效处理行复制场景的常用方法:
假设你的源表名为source_data,包含name、type、amt、result字段,执行以下SQL即可得到目标结果:
SELECT s.name, s.type, s.amt FROM source_data s, LATERAL FLATTEN(INPUT => ARRAY_GENERATE_RANGE(1, s.result + 1)) WHERE s.result > 0 -- 过滤result为0的行,避免生成空行
逻辑说明:
ARRAY_GENERATE_RANGE(1, s.result + 1):针对每行的result值,生成一个从1到result的整数数组。例如result=3时,生成数组[1,2,3]。LATERAL FLATTEN:将生成的数组展开为多行,数组有多少个元素,原行就会被复制多少次。- 最后只选取需要的
name、type、amt字段,得到重复后的结果。
如果你的源数据是通过子查询得到的,直接把source_data替换为对应的子查询即可,比如:
SELECT sub.name, sub.type, sub.amt FROM ( -- 这里替换成你的原始查询语句 SELECT name, type, amt, result FROM your_original_query ) sub, LATERAL FLATTEN(INPUT => ARRAY_GENERATE_RANGE(1, sub.result + 1)) WHERE sub.result > 0
内容的提问来源于stack exchange,提问作者Abhishek Parashar
相关产品推荐
相关产品推荐

