You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Snowflake中基于Quantity列值用SQL重复数据行

在Snowflake中根据列值重复数据行的实现方法

Snowflake不支持Oracle风格的CONNECT BY层次查询,也无法通过DUAL表实现行重复需求,你可以用以下两种原生方法实现:

方法1:LATERAL JOIN + GENERATOR函数

这是最直接的方式,利用GENERATOR函数生成指定行数的记录,再通过LATERAL JOIN关联原表:

SELECT 
    t.Id
FROM 
    your_table t
LATERAL JOIN 
    TABLE(GENERATOR(ROWCOUNT => t.Quantity)) g;

方法2:LATERAL JOIN + FLATTEN + ARRAY_GENERATE_RANGE

通过生成包含指定数量元素的数组,再用FLATTEN展开数组实现行重复:

SELECT 
    t.Id
FROM 
    your_table t,
    LATERAL FLATTEN(INPUT => ARRAY_GENERATE_RANGE(1, t.Quantity + 1));

测试示例

如果你的测试数据如下:

CREATE OR REPLACE TEMP TABLE test_data (
    Id INT,
    Quantity INT
);

INSERT INTO test_data VALUES
(1, 3),
(2, 2),
(3, 1);

执行上述任意一种查询,都会得到以下结果:

Id
1
1
1
2
2
3

内容的提问来源于stack exchange,提问作者Ali Alghaithi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:45:55