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

如何使用SQL Server的unpivot功能将表格转换为键值对格式

SQL Server 宽表转键值对长表实现方案

你推测的UNPIVOT函数完全可以实现该需求,注意UNPIVOT要求所有被转换的列数据类型一致,本例中Age为INT类型,Name、Club为字符串类型,需要先做类型统一,具体实现代码如下:

方法1:使用UNPIVOT函数实现

SELECT 
    PlayerCode,
    [Key],
    [Value]
FROM 
    (
        -- 子查询统一字段类型,替换为你实际的原始表名
        SELECT 
            PlayerCode,
            Name,
            CAST(Age AS VARCHAR(10)) AS Age,
            Club
        FROM Player
    ) AS SourceTable
UNPIVOT
(
    -- 定义输出的键、值字段名
    [Value] FOR [Key] IN (Name, Age, Club)
) AS UnpivotResult

方法2:使用CROSS APPLY实现(更灵活)

如果需要自定义规则、后续扩展更方便,也可以用CROSS APPLY + VALUES的写法实现相同效果:

SELECT 
    p.PlayerCode,
    t.[Key],
    t.[Value]
FROM Player p
CROSS APPLY (
    VALUES 
        ('Name', p.Name),
        ('Age', CAST(p.Age AS VARCHAR(10))),
        ('Club', p.Club)
) AS t([Key], [Value])

两种写法输出的结果完全符合你要求的结构,不需要额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:45:03