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

MySQL技术求助:新增分销商变更历史统计列及SQL实现

合并SKU分销商数据的SQL实现方案

原始数据源

SKU ID    Distributor
1        A
2        A
2        B
3        A
3        B
3        C

期望输出

SKU ID  Distributor       Distributor Change History
1         A                     1
2         A,B                   2
3         A,B,C                 3

不同数据库的实现代码

MySQL/MariaDB 版本

使用GROUP_CONCAT实现分销商字符串合并,结合COUNT统计数量:

SELECT 
    `SKU ID`,
    GROUP_CONCAT(Distributor ORDER BY Distributor SEPARATOR ',') AS Distributor,
    COUNT(DISTINCT Distributor) AS `Distributor Change History`
FROM 
    your_table_name -- 替换为你的实际表名
GROUP BY 
    `SKU ID`
ORDER BY 
    `SKU ID`;

注:若同SKU下不会出现重复的分销商记录,COUNT(DISTINCT Distributor)可替换为COUNT(*),提升查询效率

PostgreSQL 版本

使用STRING_AGG完成字符串聚合:

SELECT 
    "SKU ID",
    STRING_AGG(Distributor, ',' ORDER BY Distributor) AS Distributor,
    COUNT(DISTINCT Distributor) AS "Distributor Change History"
FROM 
    your_table_name -- 替换为你的实际表名
GROUP BY 
    "SKU ID"
ORDER BY 
    "SKU ID";

SQL Server 2017+ 版本

通过STRING_AGG配合WITHIN GROUP实现有序合并:

SELECT 
    [SKU ID],
    STRING_AGG(Distributor, ',') WITHIN GROUP (ORDER BY Distributor) AS Distributor,
    COUNT(DISTINCT Distributor) AS [Distributor Change History]
FROM 
    your_table_name -- 替换为你的实际表名
GROUP BY 
    [SKU ID]
ORDER BY 
    [SKU ID];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:23:13