Hola oscarbt
Puedo suponer que tu campo COD_PER es de tipo CADENA, es por eso que al hacer el max, te regresa 9 antes que 10... Aquí la pregunta que tendría que hacerte es ¿Por qué razón tienes el campo como tipo texto? eso es un error de diseño terrible.
Checa este script. el campo Numero es de tipo INT, el campo cadena es de tipo VARCHAR, observa lo que pasa al obtener los MAX():
Código MySQL:
Ver original+--------+--------+
| numero | cadena |
+--------+--------+
| 1 | 1 |
| 9 | 9 |
| 10 | 10 |
| 111 | 111 |
+--------+--------+
+-------------+-------------+
+-------------+-------------+
| 111 | 9 |
+-------------+-------------+
Esto es porque al hacer MAX sobre un campo tipo TEXT lo que hace es ordenarlos alfabéticamente, no por el valor que representa. Para hacer la conversión lo haces también con CAST:
http://dev.mysql.com/doc/refman/5.0/...functions.html
Y en lugar de la función ISNULL utilizas la función IFNULL:
http://dev.mysql.com/doc/refman/5.0/...functions.html
Sería más o menos así:
Código MySQL:
Ver original+-------------+-------------------------------+
+-------------+-------------------------------+
| 111 | 111 |
+-------------+-------------------------------+
Ojo para la próxima, te recomiendo que primero le preguntes a SAN GOOGLE antes de publicar una pregunta en el foro.
Saludos
Leo.