MYSQL将行数据透视到列
我创建了下表MYSQL将行数据透视到列,mysql,sql,workbench,Mysql,Sql,Workbench,我创建了下表 CREATE TABLE `demo` ( `id` int(11) DEFAULT NULL, `A1` varchar(56) DEFAULT NULL, `B1` varchar(56) DEFAULT NULL, `C1` varchar(56) DEFAULT NULL, `D1` varchar(56) DEFAULT NULL, `E1` varchar(56) DEFAULT NULL, `user_id` varchar(56) DEF
CREATE TABLE `demo` (
`id` int(11) DEFAULT NULL,
`A1` varchar(56) DEFAULT NULL,
`B1` varchar(56) DEFAULT NULL,
`C1` varchar(56) DEFAULT NULL,
`D1` varchar(56) DEFAULT NULL,
`E1` varchar(56) DEFAULT NULL,
`user_id` varchar(56) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我的插入查询
INSERT INTO `demo` VALUES
(1,'a','b','c','d','d','10');
(2,'a','c','d','a','c','11');
(3,'a','d','d','a','c','12');
然后我的桌子结构就在这里了
为此,我尝试了以下方法
select `10`,`20`,`30` from
(
(select A1,B1,C1,D1,E1 from demo where id =1) as `10`,
(select A1,B1,C1,D1,E1 from demo where id =2) as `20`,
(select A1,B1,C1,D1,E1 from demo where id =3) as `30`
)as s
我得到以下错误
Error Code: 1064. You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use
near 's' at line 6
请让我知道我做错了什么……或者其他更好的方法来获得您想要的输出:
select max(case when id = 1 then val end) as `10`,
max(case when id = 2 then val end) as `20`,
max(case when id = 3 then val end) as `30`
from ((select id, a1 as val, 1 as which from demo) union all
(select id, b1, 2 as which from demo) union all
(select id, c1, 3 as which from demo) union all
(select id, d1, 4 as which from demo) union all
(select id, e1, 5 as which from demo)
) x
group by which;
请原谅我!这些是什么<代码>一,二,三,四,五我也不明白你的输出@我已经更新了我的问题。请看this@SubrataDeyPappu我想要我的数据作为数据透视。你能帮我发送你的预期结果吗?你的查询完全是错误的,只是为了理解他+1@Gordon Linoff你能解释一下你的疑问和背后的逻辑吗?为什么你在这里使用1,2,3,4,5。请告诉我你的逻辑this@user3172982 . . . 输出有五行,需要对它们进行聚合和排序。因此需要序列号。@GordonLinoff谢谢