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

SQL中如何合并部分列值相同、部分列值不同的多行数据?

解决SQL中同组数值求和+字符串拼接的问题

你需要按ProductNumber分组,对QuantityOnHand求和,同时把同组的VendorID拼接成类似“401 & 501”的格式,核心是用字符串聚合函数,不同数据库的实现不一样,下面分主流数据库给出示例:

MySQL/MariaDB

使用GROUP_CONCAT()函数,指定分隔符为' & ':

SELECT 
  ProductNumber,
  SUM(QuantityOnHand) AS TotalQuantity,
  GROUP_CONCAT(VendorID SEPARATOR ' & ') AS VendorIDs
FROM 你的连接表名
GROUP BY ProductNumber;

SQL Server(2017及以上版本)

使用STRING_AGG()函数:

SELECT 
  ProductNumber,
  SUM(QuantityOnHand) AS TotalQuantity,
  STRING_AGG(VendorID, ' & ') AS VendorIDs
FROM 你的连接表名
GROUP BY ProductNumber;

Oracle(11gR2及以上版本)

使用LISTAGG()函数:

SELECT 
  ProductNumber,
  SUM(QuantityOnHand) AS TotalQuantity,
  LISTAGG(VendorID, ' & ') WITHIN GROUP (ORDER BY VendorID) AS VendorIDs
FROM 你的连接表名
GROUP BY ProductNumber;

PostgreSQL

使用STRING_AGG()函数,注意需将数值类型的VendorID转为字符串:

SELECT 
  ProductNumber,
  SUM(QuantityOnHand) AS TotalQuantity,
  STRING_AGG(VendorID::TEXT, ' & ') AS VendorIDs
FROM 你的连接表名
GROUP BY ProductNumber;

注意事项

  • 替换你的连接表名为实际两张表连接后的表(或直接在FROM后写完整的JOIN语句)
  • 若VendorID是数值类型,部分数据库需要先转换为字符串再拼接
  • 可通过添加ORDER BY子句控制VendorID的拼接顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:10:51