mysql 如何行转列
时间: 2023-07-18 09:39:58 浏览: 70
Sql实现行转列的方法
在 MySQL 中,可以使用 `GROUP BY` 和 `CASE` 语句来进行行转列的操作。以下是一个示例:
假设有以下数据:
```
id | name | score
---------------------
1 | Tom | 80
1 | Tom | 90
1 | Tom | 85
2 | Jack | 70
2 | Jack | 75
2 | Jack | 80
```
要将每个人的成绩转换为一行,可以使用以下查询:
```
SELECT id, name,
MAX(CASE WHEN row_number = 1 THEN score END) AS score1,
MAX(CASE WHEN row_number = 2 THEN score END) AS score2,
MAX(CASE WHEN row_number = 3 THEN score END) AS score3
FROM (
SELECT id, name, score,
ROW_NUMBER() OVER (PARTITION BY id, name ORDER BY score DESC) AS row_number
FROM scores
) AS t
GROUP BY id, name
```
这将生成以下结果:
```
id | name | score1 | score2 | score3
--------------------------------------------
1 | Tom | 90 | 85 | 80
2 | Jack | 80 | 75 | 70
```
其中,每个人的最高分数为 `score1`,第二高分数为 `score2`,第三高分数为 `score3`。
阅读全文