mysql - SQL 产生所需的输出

标签 mysql sql pivot

来自如下所示的数据(在 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/

相关文章:

java - 参数索引超出范围(4 > 参数数量,即 2)

java - 获取 java.sql.SQLException : Operation not allowed after ResultSet closed

r - Polars Rust Melt() 明显慢于 R stack()

php - 几乎所有查询都变慢了

mysql - 在一次查询中通过所有 mysql 数据库删除子字符串

mysql - MYSQL中如何对列进行排序

php - 需要 Sql 查询对于给定的情况

sql - 选择具有撇号值 postgresql 的行

sql - 更有效地旋转行

sql-server-2005 - "Pivoting"SQL Server 中的非聚合数据