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

如何编写SQL查询将多行键值数据转为单行结构化展示?

SQL行转列查询方案

原表结构(假设表名为user_attributes)

ID  Key         Value
1   OrgName     Google
1   email       John.Smith@gmail.com
1   Status      active
1   givenName   John
1   sn          Smith
1   userName    JSmith
2   OrgName     Yahoo
2   email       Paul.Jonesh@yahoo.com
2   Status      active
2   givenName   Paul    
2   sn          Jones
2   userName    PJones

目标输出格式

ID  givenName   sn
1   John        Smith
2   Paul        Jones

实现方案

通用写法(支持绝大多数关系型数据库)

通过条件聚合筛选指定Key的取值,按ID分组提取对应字段:

SELECT
    ID,
    MAX(CASE WHEN `Key` = 'givenName' THEN Value END) AS givenName,
    MAX(CASE WHEN `Key` = 'sn' THEN Value END) AS sn
FROM user_attributes
GROUP BY ID;

注:用MAX或MIN均可,因为每个ID对应目标Key仅存一条记录,聚合函数仅用于提取唯一值。

特定数据库PIVOT写法(以SQL Server为例)

若数据库支持PIVOT语法,可使用更简洁的写法:

SELECT ID, givenName, sn
FROM (
    SELECT ID, `Key`, Value
    FROM user_attributes
) AS src
PIVOT (
    MAX(Value)
    FOR `Key` IN (givenName, sn)
) AS pvt;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:39:17