我有如下表格
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/