sql - 多于一列的 MySql

标签 sql mysql database pivot

我有这张 table

------------------
1  | 20,00 | A  |
2  | 20,00 | A  |
3  | 20,00 | A  |
4  | 20,00 | A  |
1  | 50,00 | B  |
2  | 50,00 | B  |
3  | 50,00 | B  |
4  | 50,00 | B  |

我想使用 group by 生成这个。

id   | A     | B     |
----------------------
1    | 20,00 | 50,00 |
2    | 20,00 | 50,00 |
3    | 20,00 | 50,00 |
4    | 20,00 | 50,00 |

你能帮帮我吗?

最佳答案

这是一个标准的数据透视查询:

  SELECT t.id,
         MAX(CASE WHEN t.col = 'A' THEN t.value ELSE NULL END) AS A,
         MAX(CASE WHEN t.col = 'B' THEN t.value ELSE NULL END) AS B
    FROM TABLE t
GROUP BY t.id

MySQL 不支持 PIVOT/UNPIVOT 语法。

关于sql - 多于一列的 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3498515/

相关文章:

PHP 搜索,仅显示 session ID 日志

具有左连接和时间条件的 MySQL 查询

mysql - 从子查询中获取列

mysql - 使用 SQL 查询合并两个数据集

mysql - SQL - 计算包含两个不同字段的行数

MySQL 在收到我的查询时抛出错误

php - 如何防止 PHP 中的 SQL 注入(inject)?

sql - 如何使 View 列不为空

mysql - 从列名中删除后缀

Mysql 无法创建/写入文件错误#13