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

MySQL中不使用PIVOT函数实现表旋转的方法求助

MySQL 无PIVOT实现表旋转方案

前提假设

假设你的原始表(附图1)结构类似这样(以original_table为例):

idtypevalue
11100
12200
13300
14400
21150
22250
23350
24450

期望结果表(附图2)是将type的1/2/3/4转为列,每个id对应一行:

idtype_1type_2type_3type_4
1100200300400
2150250350450

实现SQL代码

利用GROUP BY结合IF函数即可完成行转列,无需PIVOT:

SELECT
    id,
    MAX(IF(type = 1, value, NULL)) AS type_1,
    MAX(IF(type = 2, value, NULL)) AS type_2,
    MAX(IF(type = 3, value, NULL)) AS type_3,
    MAX(IF(type = 4, value, NULL)) AS type_4
FROM original_table
GROUP BY id;

代码说明

  • GROUP BY id:保证每个id只输出一行结果
  • IF(type = X, value, NULL):判断当前行的type是否为目标值,是则取对应的value,否则返回NULL
  • MAX()聚合函数:因为每个id+type组合只会有一条有效数据(其他为NULL),MAX会自动忽略NULL,保留对应type的真实值。如果同一id+type有多条记录,可根据需求替换为SUM()求和或MIN()取最小值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:30:39