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

Oracle查询实现:基于ORDER列与QTY列生成自定义序列

Oracle查询实现按QTY拆分生成序列值

以下两种方法均可实现需求,将每条记录按QTY值拆分成从1到QTY的序号,并生成ORDER值-序号格式的结果:

方法一:使用CONNECT BY和LEVEL伪列

利用Oracle层级查询功能,通过LEVEL伪列生成1到QTY的序号,同时通过PRIOR条件避免笛卡尔积:

SELECT 
    "ORDER" || '-' || LEVEL AS NewSequence
FROM 
    your_table
CONNECT BY 
    LEVEL <= QTY
    AND PRIOR "ORDER" = "ORDER"
    AND PRIOR SYS_GUID() IS NOT NULL;

注意:ORDER是Oracle关键字,如果你的列名确实为ORDER,需要用双引号包裹;若列名是其他非关键字名称,可直接使用列名。

方法二:使用递归CTE(WITH子句)

通过递归公共表表达式逐步生成序号,逻辑更直观:

WITH seq_generator AS (
    SELECT 
        "ORDER", 
        QTY, 
        1 AS seq
    FROM 
        your_table
    UNION ALL
    SELECT 
        "ORDER", 
        QTY, 
        seq + 1
    FROM 
        seq_generator
    WHERE 
        seq + 1 <= QTY
)
SELECT 
    "ORDER" || '-' || seq AS NewSequence
FROM 
    seq_generator
ORDER BY 
    "ORDER", seq;

说明

  • 替换上述代码中的your_table为你的实际表名
  • 两种方法执行后都会得到期望的输出结果:
    NewSequence
    34905-1
    34905-2
    39754-1
    39754-2
    39754-3
    39754-4
    39754-5
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:26:15