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

Oracle SQL中如何通过同一标识符合并同一列的两个值?

在Oracle SQL中实现一次性合并的方案

完全可以在Oracle SQL中直接完成这个需求,无需导出到Excel手动合并,以下提供两种常用实现方式:

方法1:使用LISTAGG聚合函数(Oracle 11g及以上版本适用)

LISTAGG是Oracle专门用于字符串聚合的函数,能按指定分组拼接字段值,非常适配这个场景:

SELECT
    UPPER(Address) AS ADDRESS,
    LISTAGG(NAME, ' ') WITHIN GROUP (ORDER BY NAME_TYPE) AS FULL_NAME
FROM
    你的表名
GROUP BY
    Address
ORDER BY
    Address;

说明:

  • UPPER(Address)将地址统一转为大写,匹配期望结果的格式
  • LISTAGG(NAME, ' ')用空格拼接名字,WITHIN GROUP (ORDER BY NAME_TYPE)确保先拼接名(FIRST)再拼接姓(LAST)
  • 按Address分组,保证同一地址的两条记录合并为一行

方法2:使用自连接(兼容低版本Oracle)

如果你的Oracle版本低于11g,不支持LISTAGG,可以通过自连接关联同地址的名和姓:

SELECT
    UPPER(a.Address) AS ADDRESS,
    a.NAME || ' ' || b.NAME AS FULL_NAME
FROM
    你的表名 a
JOIN
    你的表名 b ON a.Address = b.Address
WHERE
    a.NAME_TYPE = 'FIRST'
    AND b.NAME_TYPE = 'LAST'
ORDER BY
    a.Address;

说明:

  • 通过自连接将同一地址下的「名」记录和「姓」记录关联
  • 用||运算符拼接名和姓,生成全名
  • UPPER函数统一地址的大小写格式

两种方法都能直接输出你期望的查询结果,无需额外的Excel操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:22:46