mysql中将列动态转换为行,mysql 行转列 MySQL数据库动态行转列
时间: 2023-09-14 20:12:00 浏览: 93
mysql动态行转列
5星 · 资源好评率100%
MySQL中将列动态转换为行,可以使用`GROUP_CONCAT`函数和`CASE WHEN`语句,具体操作如下:
假设有一张表`demo_table`,包含以下数据:
```
+----+-------+-------+-------+
| id | name | score | grade |
+----+-------+-------+-------+
| 1 | Alice | 90 | A |
| 2 | Bob | 80 | B |
| 3 | Cindy | 70 | C |
+----+-------+-------+-------+
```
现在需要将`score`列转换为行,即将每个人的成绩按照科目进行展示,可以使用以下SQL语句:
```sql
SELECT name,
MAX(CASE WHEN grade = 'A' THEN score END) AS 'A',
MAX(CASE WHEN grade = 'B' THEN score END) AS 'B',
MAX(CASE WHEN grade = 'C' THEN score END) AS 'C'
FROM demo_table
GROUP BY name;
```
执行以上SQL语句后,可以得到以下结果:
```
+-------+----+----+----+
| name | A | B | C |
+-------+----+----+----+
| Alice | 90 | | |
| Bob | | 80 | |
| Cindy | | | 70 |
+-------+----+----+----+
```
其中,`CASE WHEN`语句将每个成绩按照科目进行分组,`MAX`函数将每个分组中最大的成绩取出来,最终得到了每个人的成绩表格。
阅读全文