select * from test
grade_id subject_name max_score
1 语文 98
2 数学 95
2 政治 87
5 语文 97
5 数学 100
5 政治 92
转换后
年级 语文 数学 政治
一年级 98 0 0
二年级 0 95 87
五年级 97 100 92
select * from test
grade_id subject_name max_score
1 语文 98
2 数学 95
2 政治 87
5 语文 97
5 数学 100
5 政治 92
转换后
年级 语文 数学 政治
一年级 98 0 0
二年级 0 95 87
五年级 97 100 92
SELECT
( CASE grade_id WHEN 1 THEN '一年级' WHEN 2 THEN '二年级' ELSE '五年级' END ) AS '年级',
( IFNULL(( SELECT max_score FROM test WHERE grade_id = t.grade_id AND subject_name = '语文' ), 0 ) ) AS '语文',
( IFNULL(( SELECT max_score FROM test WHERE grade_id = t.grade_id AND subject_name = '数学' ), 0 ) ) AS '数学',
( IFNULL(( SELECT max_score FROM test WHERE grade_id = t.grade_id AND subject_name = '政治' ), 0 ) ) AS '政治'
FROM
test t
GROUP BY grade_id;
(MySQL)