クエリをよく理解していれば、DB 構造を変更せずにこれを行うことができます。
select MAIN.stu_number, MAIN.stu_name, MAIN.ex_name,
MATHS.stu_score as MATHEMATICS,
ENGLISH.stu_score as ENGLISH,
PHYSICS.stu_score as PHYSICS,
CHEMISTRY.stu_score as CHEMISTRY
from EXAMS_MASTER_REGISTER MAIN
left join EXAMS_MASTER_REGISTER MATHS on MAIN.stu_number = MATHS.stu_number AND MATHS.ex_subject = 'MATHEMATICS'
left join EXAMS_MASTER_REGISTER ENGLISH on MAIN.stu_number = ENGLISH.stu_number AND ENGLISH.ex_subject = 'ENGLISH'
left join EXAMS_MASTER_REGISTER PHYSICS on MAIN.stu_number = PHYSICS.stu_number AND PHYSICS.ex_subject = 'PHYSICS'
left join EXAMS_MASTER_REGISTER CHEMISTRY on MAIN.stu_number = CHEMISTRY.stu_number AND CHEMISTRY.ex_subject = 'CHEMISTRY'
where MAIN.stu_level = '1'
and MAIN.stu_stream = 'EAST'
and MAIN.ex_semester = 'FIRST'
and MAIN.ex_name = 'MIDYEARS'
and MAIN.academic_year = '2012'
order by (NVL(MATHS.stu_score,0) + NVL(ENGLISH.stu_score,0) + NVL(PHYSICS.stu_score,0) + NVL(CHEMISTRY.stu_score,0) ) desc
注: この形式では使用できなくなったため、順序を変更しました。これは、スコアを合計し、それによってランク付けするようになりました。
ただし、この正確な DB 構造は不適切です。これは第 1 正規形 (1NF)ではないため、物事が不必要に難しくなり、エラーが発生しやすくなります。また、 2NF、3NF、およびBCNFも読むことを検討してください(他のものもそうですが、知る限り、これらはより広く知られ、使用されている正規形です)。私はあなたが学んでいると仮定します、そしてこれはあなたを正しい軌道に乗せるでしょう.
1 つのテーブルを (少なくとも) 2 つに分割する必要があります。1 つは学生の個人データ用 (現在 MAIN エイリアスで使用される列) で、もう 1 つはスコア用 (その他の列) です。