Rub*_*_PH 4 mysql sql select pivot
我真的不知道如何把这个,但请查看下面的详细信息.
学生
|Student_ID|Student_Name|
|1 |Ryan |
|2 |Camille |
|3 |George |
Run Code Online (Sandbox Code Playgroud)
年级
|Student_ID|Subject |Grade
|1 |Math |5
|1 |English |3
|1 |History |1
|2 |Math |3
|2 |English |4
|2 |History |1
|3 |Math |5
|3 |English |1
|3 |History |2
Run Code Online (Sandbox Code Playgroud)
有可能得到这个结果吗?
Student_Name|Math|English|History
Ryan |5 |3 |1
Camille |3 |4 |1
George |5 |1 |2
Run Code Online (Sandbox Code Playgroud)
现在我通过首先使用列名称填充未绑定的数据网格,然后是学生姓名,然后添加每个学生姓名的详细信息,从而实现了这一目标.这很耗时,我想更好地优化查询.
提前致谢.
Joh*_*Woo 11
尝试,
SELECT a.Student_name,
MAX(CASE WHEN subject = 'MATH' THEN grade ELSE NULL END) MathGrade,
MAX(CASE WHEN subject = 'ENGLISH' THEN grade ELSE NULL END) EnglishGrade,
MAX(CASE WHEN subject = 'History' THEN grade ELSE NULL END) HistoryGrade
FROM Student a
LEFT JOIN Grade b
ON a.Student_ID = b.Student_ID
GROUP BY a.Student_name
Run Code Online (Sandbox Code Playgroud)