表结构:
| 姓名 | 课程 | 分数 |
|---|---|---|
| 张三 | 语文 | 74 |
| 张三 | 数学 | 83 |
| 张三 | 物理 | 93 |
| 李四 | 语文 | 74 |
| 李四 | 数学 | 84 |
| 李四 | 物理 | 94 |
转化结果:
| 姓名 | 语文 | 数学 | 物理 | 平均分 | 总分 |
|---|---|---|---|---|---|
| 张三 | 74 | 83 | 93 | 83.33 | 250 |
| 李四 | 74 | 84 | 94 | 84.00 | 252 |
sql实现:
SELECT
t.student AS '姓名',
max(
CASE
WHEN course_name = '语文' THEN
'分数'
ELSE
0
END
) AS '语文',
max(
CASE
WHEN course_name = '数学' THEN
'分数'
ELSE
0
END
) AS '数学',
max(
CASE
WHEN course_name = '物理 ' THEN
'分数'
ELSE
0
END
) AS '物理 ',
cast(avg(t.score) as decimal(18,2)) AS '平均分',
sum(t.score) AS '总分'
FROM
course t
GROUP BY
t.student
转载自: 简书 - 低至一折起