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

DB2中如何合并相同ID记录并生成指定格式的查询结果?

DB2 实现指定格式查询的SQL语句

假设数据表名为employee,可以通过分组判断结合字符串聚合实现需求,SQL语句如下:

SELECT 
    ID,
    NAME,
    CASE
        -- 当同一人员只有一个直属上级时,直接显示上级标识
        WHEN COUNT(*) = 1 THEN MAX(Boss)
        -- 当存在多个直属上级时,对主要职责对应的上级追加标注后拼接
        ELSE LISTAGG(
            CASE 
                WHEN UPPER("Main responsibility") = 'YES' THEN Boss || '(主要职责)'
                ELSE Boss
            END,
            ' AND '
        )
    END AS "main responsibility"
FROM employee
GROUP BY ID, NAME
ORDER BY ID;

逻辑说明

  • 分组判断:按ID和NAME分组,通过COUNT(*)判断当前人员的直属上级数量。
  • 单一上级处理:若仅存在一个上级,直接取该上级的标识(用MAX(Boss)是因为分组后单一值的聚合不影响结果)。
  • 多上级处理:若存在多个上级,使用LISTAGG函数拼接所有上级标识;同时通过CASE WHEN将Main responsibility为YES(统一大小写避免匹配问题)的上级追加(主要职责)标注,分隔符采用' AND '。
  • 排序:最后按ID排序,确保结果顺序与需求示例一致。

执行该语句后,将得到与需求完全匹配的查询结果:

IDNAMEmain responsibility
01TommyX3
02ElisX2(主要职责) AND X3
03JohnX65
04Lillex50

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:50:38