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

Oracle SQL:如何按ID拼接产品值并指定排序规则?

按指定顺序拼接产品列的实现方案

现有表表1包含ID、Product、UniqueProd# On ID三列,其中UniqueProd# On ID用于统计每个ID下排除"Other"的唯一产品数量。现在需要新增ProductConcat列,实现按ID分组拼接Product的值,且拼接结果遵循指定的产品顺序(例如:香蕉 → 橙子 → 苹果)。

核心实现逻辑

利用数据库的字符串聚合函数,配合自定义排序规则控制拼接顺序,以下是主流数据库的实现代码:

MySQL 版本

SELECT 
    ID,
    Product,
    `UniqueProd# On ID`,
    -- 按指定顺序拼接产品,需排除Other可在CASE中过滤
    GROUP_CONCAT(
        Product 
        ORDER BY 
            CASE Product 
                WHEN '香蕉' THEN 1
                WHEN '橙子' THEN 2
                WHEN '苹果' THEN 3
                ELSE 4 -- 其他产品排在末尾
            END 
        SEPARATOR ', ') AS ProductConcat
FROM 表1
GROUP BY ID, Product, `UniqueProd# On ID`;

SQL Server 版本

SELECT 
    ID,
    Product,
    [UniqueProd# On ID],
    STRING_AGG(
        Product, ', ') 
        WITHIN GROUP (ORDER BY 
            CASE Product 
                WHEN '香蕉' THEN 1
                WHEN '橙子' THEN 2
                WHEN '苹果' THEN 3
                ELSE 4
            END) AS ProductConcat
FROM 表1
GROUP BY ID, Product, [UniqueProd# On ID];

关键说明

  • 通过CASE语句为指定产品分配排序优先级,数字越小,拼接时越靠前
  • 若需排除"Other"产品不参与拼接,可修改聚合函数为CASE WHEN Product != 'Other' THEN Product END实现过滤
  • SEPARATOR参数可自定义拼接分隔符,示例中使用, (逗号加空格)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:15:16