El tema es como te digo arriba: el problema es la lógica de lo que quieres hacer, y la consulta que estabas elaborando, eliminaba registros. Por eso no da los resultados esperados.
El tema es sencillo, lo que tu quieres, entonces es:
1. Código de Matrícula de alumno.
2. Nombre del alumno.
3. Último mes pagado.
4. Total pagado a la fecha.
Eso sería:
Código sql:
Ver originalSELECT
`codigo`,
`codigomatricula`,
`nombres`,
`curso`,
MAX(`mes`) 'Ultimo pagado',
SUM(`valor`) 'Total abonado'
FROM meses
WHERE curso = "sexto"
AND paralelo = "b"
GROUP BY `codigomatricula`;
Si lo que quieres, es el total abonado hasta un mes determinado, la cosa cambia en el WHERE:
Código sql:
Ver originalSELECT
`codigo`,
`codigomatricula`,
`nombres`,
`curso`,
MAX(`mes`) 'Pagado hasta mes',
SUM(`valor`) 'Total abonado'
FROM meses
WHERE curso = "sexto"
AND paralelo = "b"
AND mes <= 22
GROUP BY `codigomatricula`;