Sie haben einige Möglichkeiten, dies zu tun, aber wenn Sie versuchen, keine temporären Tabellen zu erstellen, können Sie Folgendes tun:
select
s.id,
avg(case when sb.id = '01' then s.score end) as math,
avg(case when sb.id = '02' then s.score end) as bio
from student s
join subject sb on (sb.id = s.subject_id)
group by s.id
Füllen Sie einfach die Summen-/Fallzeilen zu den anderen Themen aus, wie Sie es brauchen!
Hoffe es hilft.