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

如何在DB2数据库中将键值对转换为列标题及对应列

DB2 表结构转换 SQL 实现方案

针对你的表结构转换需求,这里提供三种适用于DB2的SQL实现方法:

方法一:直接字段映射(固定键名场景)

如果原表中每行的Key1固定为Id、Key2固定为Name,可以直接通过字段别名完成转换:

SELECT
    Val1 AS Id,
    Val2 AS Name,
    "Group" AS "Group"
FROM
    your_source_table;

注意:Group是DB2保留字,需用双引号包裹。

方法二:条件聚合(通用动态场景)

如果原表键名不固定,或同一分组下存在多行存储不同键值的情况,可通过条件聚合实现转置:

WITH numbered_rows AS (
    SELECT
        Key1,
        Val1,
        Key2,
        Val2,
        "Group",
        -- 为同一分组内的行添加序号,确保Id和Name精准匹配
        ROW_NUMBER() OVER (PARTITION BY "Group" ORDER BY Val1) AS row_num
    FROM
        your_source_table
)
SELECT
    "Group",
    MAX(CASE WHEN Key1 = 'Id' THEN Val1 END) AS Id,
    MAX(CASE WHEN Key2 = 'Name' THEN Val2 END) AS Name
FROM
    numbered_rows
GROUP BY
    "Group", row_num;

方法三:DB2 PIVOT 语法(版本兼容)

若你的DB2版本为11.1及以上,支持官方PIVOT语法,可使用以下方式:

SELECT
    "Group",
    Id,
    Name
FROM
    your_source_table
PIVOT (
    MAX(Val1) FOR Key1 IN ('Id' AS Id),
    MAX(Val2) FOR Key2 IN ('Name' AS Name)
) AS pivot_table
GROUP BY
    "Group", Id, Name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:42:48