mysql - 是否可以以转置格式从表中检索数据

标签 mysql sql mariadb pivot-table unpivot

我有一个表格,其中包含以下格式的数据。

id | col1 | col2 | col3
1  | d11  | d21  | d31
2  | d12  | d22  | d32
3  | d13  | d23  | d33
4  | d14  | d24  | d34
5  | d15  | d25  | d35
6  | d16  | d26  | d36

是否可以获取以下格式的数据。

id    |  1  |  2  |  3  |  4  |  5  |  6
col1  | d11 | d12 | d13 | d14 | d15 | d16
col2  | d21 | d22 | d23 | d24 | d25 | d26
col3  | d31 | d32 | d33 | d34 | d35 | d36

我什至没有一个基本的想法。欢迎任何事情。

最佳答案

您可以将此查询用于您的输出

with cte as (
select id, 'col1' as col , col1 as val from tab
union all
select id, 'col2' as col , col2 as val from tab
union all
select id, 'col3' as col , col3 as val from tab
)
select id, [1], [2], [3], [4], [5], [6] from (
select id, col, val from cte
) as d
pivot (
max(val) for col in ( [1], [2], [3], [4], [5], [6] )
) as p

请验证这一点,看看它是否有效。

关于mysql - 是否可以以转置格式从表中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57319808/

相关文章:

php - 显示来自多个 MySQL 表的数据

mysql - 在 mysql 中的 INSERT 查询中为 INT 类型列传递 ''(空),适用于某些配置,但不适用于其他配置

sql - Hive: java.lang.OutOfMemoryError: Java heap space and Job running in-process (local Hadoop)

SQL 查询将字段递增该字段中的前一个数字

mysql - Mariadb:ER_PARSE_ERROR,如何修复?

mysql - 在 SQL 查询中添加 365 天或年 - MOODLE

mysql - 使用自定义计算列改进复杂查询

php - 如果我只使用 PHP 文件而不与数据库相关,那么我可以在 XAMPP 中停止 MySql 服务吗?

mysql - MariaDB node.js 的 pool.getConnection 的 typescript 错误

mysql - Magento MySql : ERROR 1005 (HY000) at line 1003: Can't create table 'magento.xxxxxx' (errno: -1)