Let me ask a couple of questions to refine what you are try to achieve. Do you want three tables on one page for each SNO? If you want three separate tables, will not three PROC steps each with a BY statement do the trick?
Your second two example reports do not have SNO is this an oversight or are they somehow summarizing across SNO?
You will probably want to look into ODS LAYOUT to get the three reports on one page.
Since you will be using three different PROC steps for each student, you have a couple of options.
1) my choice, because it involves macros, use a %DO loop to execute the three procs once for each studentnumber.
2) generate all your tables individually using BY statements and then recombine them using PROC DOCUMENT. This I have not done, but it should be doable.