Para poner el max de un campo debes agrupar por todos los demás campos que queden fuera del agregado. Por ejemplo si para la misma combinación de CAMPO1...CAMPON tienes un CAMPOX y quieres saber el máximo, quedaría así:
Código SQL
[-]SELECT CAMPO1, CAMPO2, ...CAMPON, MAX(CAMPOX)
FROM TABLA
WHERE ......BLABLABLA
GROUP BY CAMPO1, CAMPO2,....CAMPON
Por lo que veo de tu procedimiento.....creo que es bastante dificil implementarlo con agregados. Te sigo recomendando las subconsultas.