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

如何在SQL表中将同组连续序列号转换为From-To范围列

解决方案

假设你的表名为your_table,serial列是字符串格式的数字(如'001'),可以用以下SQL查询实现需求:

WITH grouped_serials AS (
    SELECT
        extra,
        serial,
        -- 将serial转为数值,减去组内行号,连续序列会得到相同的分组键
        CAST(serial AS INT) - ROW_NUMBER() OVER (PARTITION BY extra ORDER BY serial) AS group_key
    FROM your_table
)
SELECT
    extra,
    MIN(serial) AS "From",
    MAX(serial) AS "To"
FROM grouped_serials
GROUP BY extra, group_key
ORDER BY extra, "From";

说明

  • 先用CTEgrouped_serials生成分组键:对每个extra组内的serial排序后,用serial的数值减去行号,连续的serial会得到相同的group_key(比如001-1=0,002-2=0,…,010-10=0;011-1=10,012-2=10)
  • 随后按extra和group_key分组,取每组最小的serial作为起始,最大的作为结束
  • 如果serial是固定长度的格式(比如3位),可以用LPAD函数保持输出格式,例如LPAD(MIN(serial), 3, '0'),根据实际长度调整参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:08:13