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

在Snowflake(SQL)中如何基于最小最大值区间生成对应多行数据

Snowflake SQL 生成区间整数行实现方案

方案1:使用原生GENERATE_SERIES函数(优先推荐)

Snowflake 内置的GENERATE_SERIES函数可以直接生成连续整数序列,配合横向连接(LATERAL JOIN)即可按ID展开对应区间的所有整数,写法简洁性能最优。
完整示例代码如下:

-- 此处WITH块为构造测试数据,实际使用时替换为你自己的业务表即可
WITH source_data AS (
    SELECT 1 AS ID, 3 AS T_Min, 5 AS T_Max
    UNION ALL
    SELECT 2 AS ID, 1 AS T_Min, 4 AS T_Max
)
SELECT 
    s.ID,
    g.value AS T
FROM source_data s,
LATERAL GENERATE_SERIES(s.T_Min, s.T_Max) g
ORDER BY s.ID, T;

方案2:递归CTE实现(兼容自定义规则场景)

如果需要自定义序列生成逻辑(比如非1间隔、特殊终止条件等),可以用递归CTE实现,代码如下:

WITH source_data AS (
    SELECT 1 AS ID, 3 AS T_Min, 5 AS T_Max
    UNION ALL
    SELECT 2 AS ID, 1 AS T_Min, 4 AS T_Max
),
recursive_series AS (
    -- 递归初始节点:取每个ID的区间最小值作为起始值
    SELECT ID, T_Min AS T, T_Max FROM source_data
    UNION ALL
    -- 递归迭代:每次+1直到达到区间最大值
    SELECT ID, T + 1 AS T, T_Max FROM recursive_series
    WHERE T < T_Max
)
SELECT ID, T FROM recursive_series
ORDER BY ID, T;

两种方法输出的结果完全一致:

IDT
13
14
15
21
22
23
24

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:15:03