You need to enable JavaScript to run this app. 如何将相同id对应的多行文本数据合并转换为新列?
优惠活动
大模型
产品
解决方案
定价
更多

如何将相同id对应的多行文本数据合并转换为新列?

同ID多文本字段拼接实现方案

这个需求属于分组后字符串聚合场景,不需要使用PIVOT,直接使用对应数据库自带的分组聚合函数即可实现,假设你的源表名为source_table,各主流数据库实现方式如下:

  • MySQL 实现
    使用内置的GROUP_CONCAT函数,无分隔符直接拼接的写法如下:
SELECT 
  id,
  GROUP_CONCAT(text SEPARATOR '') AS text2
FROM source_table
GROUP BY id;

如果需要指定拼接顺序,可以在text后加ORDER BY规则,比如GROUP_CONCAT(text ORDER BY text ASC SEPARATOR '')。如果拼接内容较长超出默认长度限制,可以先执行SET SESSION group_concat_max_len = 1024000;调整当前会话的长度上限。

  • PostgreSQL 实现
    使用内置的STRING_AGG函数:
SELECT 
  id,
  STRING_AGG(text, '') AS text2
FROM source_table
GROUP BY id;

同样可以加ORDER BY指定拼接顺序:STRING_AGG(text, '' ORDER BY text ASC)。

  • SQL Server 实现

    • 2017及以上版本:直接使用STRING_AGG函数
    SELECT 
      id,
      STRING_AGG(text, '') WITHIN GROUP (ORDER BY id) AS text2
    FROM source_table
    GROUP BY id;
    
    • 2017以下低版本:使用FOR XML PATH语法实现
    SELECT DISTINCT
      t1.id,
      STUFF((
        SELECT '' + t2.text 
        FROM source_table t2 
        WHERE t2.id = t1.id 
        FOR XML PATH(''), TYPE
      ).value('.', 'NVARCHAR(MAX)'), 1, 0, '') AS text2
    FROM source_table t1;
    
  • Oracle 实现
    11gR2及以上版本使用LISTAGG函数:

SELECT 
  id,
  LISTAGG(text, '') WITHIN GROUP (ORDER BY id) AS text2
FROM source_table
GROUP BY id;

低版本可以使用未公开的WM_CONCAT函数,不推荐生产环境使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 19:54:01