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

如何用SQL合并不同行字段并求和对应计数?

合并Name字段并求和Number(count)的SQL实现方法

需求说明

需要将数据表中指定行的Name字段合并为paul/john格式,同时将对应的Number(count)值求和。现有数据表:

NameNumber(count)
Paul50
John50

期望结果:

NameNumber(count)
paul/john100

解决方案

1. 针对固定合并Paul和John的场景

如果只需要合并这两个特定名字,可以直接指定拼接规则并过滤求和:

SELECT 
    CONCAT(LOWER('Paul'), '/', LOWER('John')) AS Name,
    SUM(`Number(count)`) AS `Number(count)`
FROM your_table
WHERE Name IN ('Paul', 'John');

2. 通用合并所有行的场景

如果需要合并表中所有行的Name并求和,不同数据库的字符串聚合语法略有差异:

  • MySQL/MariaDB:使用GROUP_CONCAT函数
SELECT 
    GROUP_CONCAT(LOWER(Name) SEPARATOR '/') AS Name,
    SUM(`Number(count)`) AS `Number(count)`
FROM your_table;
  • PostgreSQL:使用STRING_AGG函数
SELECT 
    STRING_AGG(LOWER(Name), '/') AS Name,
    SUM("Number(count)") AS "Number(count)"
FROM your_table;
  • SQL Server:使用STUFF结合FOR XML PATH实现字符串拼接
SELECT 
    STUFF((SELECT '/' + LOWER(Name) 
           FROM your_table 
           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS Name,
    SUM([Number(count)]) AS [Number(count)]
FROM your_table;

说明

  • LOWER()函数用于将Name转为小写,与期望结果的paul/john格式匹配,若不需要小写可直接移除该函数。
  • 由于字段名包含括号和空格,需要根据数据库规则用反引号(MySQL)、双引号(PostgreSQL)或方括号(SQL Server)包裹字段名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:01:27