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

PostgreSQL中如何将整数字段扩展为连续数值范围的SQL实现

可以用PostgreSQL纯SQL轻松实现,无需外部脚本

PostgreSQL内置的generate_series函数正好适合处理这种按行生成连续序列的需求,结合LATERAL关联就能快速得到你想要的展开结果。

生成目标结果集

直接执行以下SQL即可得到期望的展开数据:

SELECT
    t."Group",
    s.month AS Months,
    t.Value
FROM
    Table1 t
CROSS JOIN LATERAL
    generate_series(1, t.Months) AS s(month)
ORDER BY
    t."Group",
    s.month;

直接创建目标表

如果需要直接生成DesiredOutput表,可使用CREATE TABLE AS语句:

CREATE TABLE DesiredOutput AS
SELECT
    t."Group",
    s.month AS Months,
    t.Value
FROM
    Table1 t
CROSS JOIN LATERAL
    generate_series(1, t.Months) AS s(month)
ORDER BY
    t."Group",
    s.month;

逻辑说明

  • generate_series(1, t.Months):为Table1中的每一行生成从1到该行Months值的连续整数序列。
  • CROSS JOIN LATERAL:允许右侧的序列生成逻辑引用左侧表(Table1)当前行的Months值,实现逐行生成对应长度的序列并与原行数据关联。
  • 最终结果会自动将每个Group的Months扩展为1到原数值的连续整数,同时保留对应的Value值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:18:20