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

DB2多条件数据透视问题:合并同Body同Color的多材质记录

解决方案

可以通过分组+条件聚合实现你要的合并效果,核心是按body_code和color分组,提取同组内不同序列的材质:

SELECT
    body_code,
    MAX(CASE WHEN seq = 1 THEN material END) AS material_1,
    color AS color_1,
    MAX(CASE WHEN seq = 2 THEN material END) AS material_2,
    color AS color_2
FROM (
    -- 先为同一Body+颜色下的材质生成序列
    SELECT
        body_code,
        material,
        color,
        ROW_NUMBER() OVER (PARTITION BY body_code, color ORDER BY material) AS seq
    FROM product_table -- 替换为你的实际表名
    -- 保留你原有的筛选条件
) t
GROUP BY body_code, color;

逻辑说明:

  1. 内层查询使用ROW_NUMBER(),按body_code和color分区、材质排序,为每个分组内的材质生成1、2的序列;
  2. 外层查询按body_code和color分组,通过MAX(CASE...)分别提取序列1和2对应的材质;
  3. 同一Body+颜色下的多种材质会被合并到单行,比如你提到的BoDB会输出BoDB | Fabric | Black | Leather | Black;
  4. 对于仅有一种材质的产品,material_2会返回NULL,可根据需求用COALESCE(material_2, '')替换为空字符串。

执行该查询后,就能得到你预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:35:21