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

如何在Oracle SQL Developer中按ID合并多行列值?

Oracle按ID拼接多行Level列值的解决方案

要实现按ID分组拼接Level列的值,Oracle提供了LISTAGG函数,这是11g及以后版本支持的字符串聚合函数,适配Oracle SQL Developer的使用场景。

核心SQL语句

由于Level是Oracle的保留关键字,作为列名时需要用双引号包裹避免语法错误,以下是实现代码:

SELECT
    ID,
    LISTAGG("Level", ' - ') WITHIN GROUP (ORDER BY "Level") AS "Level"
FROM
    -- 替换为你的实际表名
    your_table
GROUP BY
    ID;

保持原数据顺序的调整

如果需要严格按照原表中各行的出现顺序拼接(比如示例中ID=000的C在前、FK在后,ID=222的FN在前、C在后),可以通过ROWID排序(若有专门的排序字段如时间戳,建议替换为该字段更可靠):

SELECT
    ID,
    LISTAGG("Level", ' - ') WITHIN GROUP (ORDER BY ROWID) AS "Level"
FROM
    your_table
GROUP BY
    ID;

结果说明

执行上述语句后,会将同一ID下的所有Level值用-连接,输出格式完全符合预期:

  • ID=000对应C - FK
  • ID=111对应F
  • ID=222对应FN - C
  • ID=333对应F - C
  • ID=444对应C

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:33:10