mysql - 将记录值显示为列

标签 mysql sql

我有一个这样的表:

    X    |      Y      |  Z
---------+-------------+-----
3136     |   2014-03   |  A
700      |   2014-03   |  B
531      |   2014-03   |  C
1575     |   2014-03   |  D
2776     |   2014-04   |  A
1200     |   2014-04   |  B
148      |   2014-04   |  C
903      |   2014-04   |  D

我想把这张表转换成类似的东西:

Date        |  A   |  B   |  C   |  D
------------+------+------+------+------
2014-03     | 3136 | 700  | 531  | 1575
2014-04     | 2776 | 1200 | 148  | 903

如何通过一次选择完成?

最佳答案

SELECT y as Date,
SUM(CASE WHEN Z='A' THEN X ELSE 0 END) as A,
SUM(CASE WHEN Z='B' THEN X ELSE 0 END) as B,
SUM(CASE WHEN Z='C' THEN X ELSE 0 END) as C,
SUM(CASE WHEN Z='D' THEN X ELSE 0 END) as D
FROM table
GROUP BY y

关于mysql - 将记录值显示为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23136625/

相关文章:

mysql - 如何将我正在使用 webpack 构建的 React 应用程序链接到 phpmyadmin 外部数据库并查询它,而无需在代码中显示我的数据库密码?

mysql - 即使使用索引,mysql 内连接也比 2 个单独的查询慢 50-500 倍

php - 提交后在下拉列表中显示所选值

mysql - 突然无法访问Dreamfactory中的mysql表

sql - 我如何先由 parent 订购,然后由 child 订购?

MySQL:需要返回投票最多的前 3 名用户。两个子查询的 SUM 中的一列中需要的结果。 Java/ Spring MVC

php - 如何在不使用数据库的情况下进行登录

mysql - 在存储在 session 表中的名为 session_id 的单个连接 ID 上连接 10 个表。这是好/坏的做法吗?

sql - 在 Oracle SQL Developer 中执行存储过程

Java时间戳转换错误