questo è un bel problema
non voglio neanche chiederti perchè..
prova a sostuirla con questa:
SELECT S.Ultimo_Mese
, S.Ultimo_Anno
, T.Tot_Tfr
FROM (SELECT stipendio_dettaglio.Mese AS Ultimo_Mese
, stipendio_dettaglio.Anno AS Ultimo_Anno
, (CASE stipendio_dettaglio.Mese
WHEN 'GENNAIO' THEN 1
WHEN 'FEBBRAIO' THEN 2
WHEN 'MARZO' THEN 3
WHEN 'APRILE' THEN 4
WHEN 'MAGGIO' THEN 5
WHEN 'GIUGNO' THEN 6
WHEN 'LUGLIO' THEN 7
WHEN 'AGOSTO' THEN 8
WHEN 'SETTEMBRE' THEN 9
WHEN 'OTTOBRE' THEN 10
WHEN 'NOVEMBRE' THEN 11
WHEN 'DICEMBRE' THEN 12
END) as MeseNumerico
, ID_Anagrafica
FROM stipendio_dettaglio) S
INNER JOIN (
SELECT SUM ( TFR ) AS Tot_Tfr
, ID_Anagrafica
FROM stipendio_dettaglio
GROUP BY ID_Anagrafica ) T
ON T.ID_Anagrafica = = S.ID_Anagrafica
WHERE S.ID_Anagrafica = @m_ParametroID_Anagrafica
ORDER BY S.Anno DESC
, S.MeseNumerico DESC
Poi se non sbaglio in mySql l'equivalente del TOP 1
è a fine query inserire il comando LIMIT 1
PS: naturalmente se il campo mese potrebbe essere sia maiusco che minuscolo o con spazi sarebbe opportuno che nella CASE tolga gli spazi e la renda tutta maiuscola