mysql - MySQL 中的反透视表

标签 mysql sql-server unpivot mysql-8.0

我有如下表格

CREATE TABLE unpivot_table (
    FirstName varchar(100) NOT NULL, 
    LastName varchar(100) NOT NULL,
    query1 varchar(200) NOT NULL,
    result1 varchar(200) NOT NULL,
    query2 varchar(200) NOT NULL,
    result2 varchar(200) NOT NULL,
    query3 varchar(200) NOT NULL,
    result3 varchar(200) NOT NULL,
    query4 varchar(200) NOT NULL,
    result4 varchar(200) NOT NULL,
    query5 varchar(200) NOT NULL,
    result5 varchar(200) NOT NULL
    )

我正在尝试将上表反转为下表的样子

CREATE TABLE UnPivoted (
        FirstName varchar(100) NOT NULL, 
        LastName varchar(100) NOT NULL,
        query varchar(200) NOT NULL,
        result varchar(200) NOT NULL
        )   

在 MSSQL 中我可以通过使用下面的查询来实现这一点

SELECT unpivot_table.FirstName, unpivot_table.LastName, 
        CrossApplied.query, CrossApplied.result
FROM unpivot_table
CROSS APPLY (VALUES (query1, result1),
                    (query2, result2),
                    (query3, result3),
                    (query4, result4),
                    (query5, result5)) 
            CrossApplied (query, result);

但我在 MySQL 中需要这个,而在这个查询中使用的“交叉应用”不在 MySQL 中。

根据我的研究,我发现“横向”是从 MySQL 8.0.14 开始由 mysql 引入的,它可以用作“交叉应用”的替代方法,但我未能编写查询。

请帮助在 MySQL 中实现这一目标。

提前致谢。

最佳答案

你可以使用union all

select FirstName, LastName,query1, result1 from unpivot_table
union all
select FirstName, LastName,query2, result2 from unpivot_table
union all
select FirstName, LastName,query3, result3 from unpivot_table
union all
select FirstName, LastName,query4, result4 from unpivot_table

关于mysql - MySQL 中的反透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58850386/

相关文章:

mysql - 类(class)考勤记录格式SQL查询

php - 是否可以直接在 MYSQL 查询中而不是在 PHP 中执行此算术运算?

asp.net - 为IIS APPPOOL创建SQL Server登录-不同计算机上的IIS和SQL Server

sql - 使用 SQL 查询根据连续值更新最小值

sql - 在 Postgresql 中逆透视

python - 使用 Pandas (UNPIVOT)将表格更改为高格式

mysql - 如何使两个具有不同模式的数据库保持最新

mysql - 执行查询时出错 select left join select where

sql - SQL Server View 中的位置和顶部交互

sql - Snowflake 如何对字段数组运行逆透视查询而不是显式声明每个字段?