Сначала вы выбираете названия вашей компании, используя запрос примерно так:
select * from companytable order by year
Теперь у вас есть набор результатов в массиве. Теперь при цикле через массив, вы
нужен еще один запрос для студентов под каждой компанией. Примерно так:
select * from studenttable where company_id = $row->company_id order by student_anme
Вы снова запускаете цикл внутри родительского цикла и выводите учащихся из каждой компании и т. Д.
Полагаю, у вас есть таблицы, построенные таким образом.