Según el error que da, es que interpreta un nombre de campo o de tabla como una palabra reservada del lenguaje SQL (o al menos así lo interpreto yo ese error).
Si se trata de esto, deberías buscar información de tu motor de bases de datos, mirar las palabras reservadas que tenga, y ver si alguna está en tu SQL.
Un ejemplo: Si tienes un campo que se llama USERNAME, no podrás hacer sqls sobre ese campo, porque USERNAME es una palabra reservada de Interbase (por decir algo) y da conflicto al interpretar el SQL. Solución: cambiar el nombre del campo por USER
SNAME o UNAME, etc.
No sé si podría ocurrir con el campo "MO.DESC".
Desc es típico del
order by para indicar un orden descendente, pero en principio, no debería haber problemas porque está cualificado, es decir, lleva "MO." delante, por tanto indica que es un campo perteneciente a la tabla MO. Quita ese campo del select y si no da error después, hemos acertado.
Como digo, no puedo asegurar que sea ese el error, pero es lo único que veo. El SQL parece estar bien.
OFFTOPIC: No me he sentido más inseguro de una respuesta en mi vida
.
Edito: Al ver el mensaje de
gluglu, ya me siento más seguro
Saludos