Imagining that your table is named Estudante
, this can be done with some subqueries:
select e.estudante,
a11.conceito_1, a11.conceito_2, a11.etapa,
a22.conceito_1, a22.conceito_2, a22.etapa,
a33.conceito_1, a33.conceito_2, a33.etapa
FROM Estudante e
JOIN
(
SELECT estudante, conceito_1, conceito_2, etapa
FROM Estudante where etapa = '1a'
) AS a11
ON e.estudante = a11.estudante
JOIN
(
SELECT estudante, conceito_1, conceito_2, etapa
FROM Estudante where etapa = '2a'
) AS a22
ON e.estudante = a22.estudante
JOIN
(
SELECT estudante, conceito_1, conceito_2, etapa
FROM Estudante where etapa = '3a'
) AS a33
ON e.estudante = a33.estudante
GROUP BY e.estudante
You can see it working here at this link: link
I could not think of a query that works regardless of the number of steps, without the need to add a new subquery manually.