How to select top 2 passed math courses for each student?

A Grade table like below:

Rec SSN TermCode Course Grade CrErn Count2Degree
1 111-11-1111 200507QF MS101 A 4   
2 111-11-1111 200510QF CD125 B 3  
3 111-11-1111 200510QF MS102 F 0  
4 111-11-1111 200601QF MS102 B 4  
5 111-11-1111 200604QF MS103 C 4  
6 222-22-2222 200601QF CD136 B 3   
7 222-22-2222 200601QF MS106 B 4   
8 222-22-2222 200604QF MS135 C 4  
9 222-22-2222 200607QF MS103 F 0   
10 222-22-2222 200607QF MS105 B 4   
11 333-33-3333 200907QF GE102 A 4  

MSXXX is math courses, to select top 2 passed math course SQL below:

SELECT * FROM Grade AS Q WHERE Q.Course Like 'MS*' AND Q.CrErn>0 AND Q.SSN & Q.TermCode & Q.Course & Q.Grade In (Select top 2 SSN & TermCode & Course & Grade from Grade Where Course like 'MS*' and CrErn>0 and Q.SSN=Grade.SSN order by SSN, TermCode, Course, Grade) Order by SSN, TermCode, Course, Grade                                                                                 

To update Count2Degree column run a SQL like below:

CurrentDb.Execute "Update Grade set Count2Degree='Y' where Rec in (SELECT Rec FROM Grade AS Q WHERE Q.Course Like 'MS*' AND Q.CrErn>0 AND Q.SSN & Q.TermCode & Q.Course & Q.Grade In (Select top 2 SSN & TermCode & Course & Grade from Grade where Course like 'MS*' and CrErn>0 and Q.SSN=Grade.SSN order by SSN, TermCode, Course, Grade))"

--- OR Grade_Code ---