Yo lo haría así, la consulta a la BD la ordenaría por carreraID así
Código SQL:
Ver originalSELECT * FROM prueba ORDER BY carreraId
Luego iría recorriendo cada fila comparando primero con la carreraid anterior si es el mismo al actual colocarlo en la tabla actual si es diferente empezar una nueva tabla.