As DBlank mention, if you are grouping on the application id(let's say).
The honors are tied to that value, which is why I am using it, then your data would like:
id1, honor1
id2, honor1
id2, honor2
etc.
since you don't want to see the multiple rows, you can create a formula like:
shared stringvar honors := honors +", "+ {table.honor};
place this in the detail section and suppress(hide) the section. Now the formula will accumulate all the honors associated with the id.
In the group header you would want a formula like:
shared stringvar honors := ""
so that you are only gathering the honors of the id
In the group footer you would want something like:
shared stringvar honors;
honors
this will display the resulting string (if there is one)
All of this is what DBlank was meant when he said: "usually people handle this by grouping on the primary key of the student record (student id) and hiding the details. If you are trying to show all of the honors in 1 row you will need to use shared variable formulas to read the rows and create one string that can be displayed in the group footer."
As for the left join, I agree, that it is the wise thing to do for the reason mentioned.
HTH