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

SQL Server中如何将多行数据合并为指定格式的单行文本列

解决方法

你需要的是按chemical分组,将region和asset拼接后聚合为逗号分隔的字符串,PIVOT用于行转列(把行值转为列名),并不适配这个场景,应该使用字符串聚合类的方案:

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

这是最简洁的实现方式,利用SQL Server内置的字符串聚合函数:

SELECT 
    chemical AS Chemical,
    STRING_AGG(CONCAT(region, '_', asset), ', ') AS Info
FROM chemical
GROUP BY chemical

如果需要固定输出的排序顺序,可以加上WITHIN GROUP子句:

SELECT 
    chemical AS Chemical,
    STRING_AGG(CONCAT(region, '_', asset), ', ') WITHIN GROUP (ORDER BY region, asset) AS Info
FROM chemical
GROUP BY chemical

方法二:兼容旧版本(SQL Server 2016及以下)

若你的SQL Server版本不支持STRING_AGG,可以用STUFF结合FOR XML PATH来实现字符串聚合:

SELECT 
    DISTINCT chemical AS Chemical,
    STUFF(
        (SELECT ', ' + CONCAT(region, '_', asset)
         FROM chemical c2
         WHERE c2.chemical = c1.chemical
         FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),
        1, 2, ''
    ) AS Info
FROM chemical c1

最终输出结果

两种方法都会得到你预期的格式:

ChemicalInfo
aregion1_asset1, region1_asset2, region2_asset1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:35:13