来自如下所示的数据(在 MySQL 数据库中):
mysql> select * from test;
+------------+--------+
| start | name |
+------------+--------+
| 2013-04-01 | Donald |
| 2013-04-02 | Daisy |
| 2013-04-03 | Mickey |
| 2013-04-03 | Minnie |
| 2013-04-01 | Pluto |
| 2013-04-02 | Goofy |
+------------+--------+
6 rows in set (0.00 sec)
我想编写一个查询来生成如下所示的输出:
2013-04-01 2013-04-02 2013-04003
---------- ---------- ----------
Donald Daisy Mickey
Pluto Goofy Minnie
有人可以建议 SQL 查询来生成此输出吗?
如果有帮助,这是我用来创建示例数据的代码。
create table test (
start date,
name varchar (20));
insert into test values ('2013-04-01','Donald');
insert into test values ('2013-04-02','Daisy');
insert into test values ('2013-04-03','Mickey');
insert into test values ('2013-04-03','Minnie');
insert into test values ('2013-04-01','Pluto');
insert into test values ('2013-04-02','Goofy');`
最佳答案
必须有一个数据透视表或一系列 case 语句。
Select
Case When Start = '2013-04-01' Then name End As '2013-04-01',
Case When Start = '2013-04-02' Then name End As '2013-04-02',
Case When Start = '2013-04-03' Then name End As '2013-04-03'
From Test;
如果表更复杂,动态生成此值会更困难。通过简单地导出到 Excel 并使用数据透视表功能,可以更轻松地处理较大的数据。
关于mysql - SQL 产生所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17713937/