首页 >数据库 >mysql教程 >如何使用CASE语句转置SQL中的数据?

如何使用CASE语句转置SQL中的数据?

Barbara Streisand
Barbara Streisand原创
2025-01-05 04:36:39725浏览

How to Transpose Data in SQL Using CASE Statements?

使用 Case 语句转置 SQL 表中的数据

在 SQL 中,转置数据是指转换行和列交换的数据集。要将结构类似于所提供的表的表:

Id UserId FieldName FieldValue
1 100 Username John Doe
2 100 Password pass123!
3 102 Username Jane
4 102 Password $ecret
5 102 Email Address [email protected]

转置为转置形式:

UserId Username Password Email Address
100 John Doe pass123!
102 Jane $ecret [email protected]

一种方法是使用多个 CASE 语句以及 group by 子句:

SELECT t.userid
       MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username,
       MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password,
       MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email
  FROM TABLE t
GROUP BY t.userid

此查询计算每个用户和字段组合的最大值。 CASE 语句根据 FieldName 字段的值定义要返回哪个字段值。

但是,此方法需要为每个特定字段名称定义 CASE 语句。对于动态解决方案,请考虑使用 MySQL 的准备语句(动态 SQL)语法来生成查询。

以上是如何使用CASE语句转置SQL中的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn