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

如何在SQL Server中将多行数据合并为单行?

在SQL Server中将单列多行数据合并为一行

嘿,我来帮你搞定这个多行转一行的需求!在SQL Server里,不同版本有不同的便捷方法,我给你分情况说明:

方法1:使用STRING_AGG(SQL Server 2017及以上版本)

这是最简洁的方式,官方提供的聚合函数专门用来做字符串拼接:

SELECT STRING_AGG(RepresentID, ', ') AS CombinedRepresentIDs
FROM YourTable;

这里的, 是你可以自定义的分隔符,换成空格、分号或者竖线' | '都没问题。执行后就能得到一行合并后的字符串,比如111122222, 3333344444, 5555566666, ...。

方法2:使用FOR XML PATH(适用于SQL Server 2016及更早版本)

如果你的SQL Server版本比较老,没有STRING_AGG,就用这个经典的XML拼接方法:

SELECT STUFF(
    (SELECT ', ' + RepresentID
     FROM YourTable
     FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),
    1, 2, ''
) AS CombinedRepresentIDs;

简单解释下逻辑:

  • FOR XML PATH('')会把每行的', ' + RepresentID拼接成一段XML文本
  • .value('.', 'NVARCHAR(MAX)')把XML格式转换成普通字符串
  • STUFF函数用来去掉开头多余的, (因为第一行前面也会自动加上分隔符,所以从第1位开始删除2个字符)

要是你换了其他分隔符,比如' | ',记得把STUFF的第三个参数改成3(对应分隔符的长度),这样就能精准去掉开头的多余符号了。

测试的时候,只需要把YourTable换成你实际的表名就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:23:45