se ho capito ene dovresti fare cosi':
SELECT citta.localita AS localita, garanzia1.intervento AS garanzia1, garanzia2.intervento AS garanzia2, garanzia3.intervento AS garanzia3
FROM (SELECT localita FROM interventi WHERE anno=11 GROUP BY localita HAVING count(*)>0 ) AS citta LEFT JOIN
(SELECT localita, count(*) as intervento FROM interventi WHERE anno=11 AND codiceintervento=66 GROUP BY localita) AS garanzia1 ON citta.localita = garanzia1.localita LEFT JOIN
(SELECT localita, count(*) as intervento FROM interventi WHERE anno=11 AND codiceintervento=62 GROUP BY localita) AS garanzia2 ON citta.localita = garanzia2.localita LEFT JOIN
(SELECT localita, count(*) as intervento FROM interventi WHERE anno=11 AND codiceintervento=58 GROUP BY localita) AS garanzia3 ON citta.localita = garanzia3.localita
ORDER BY citta.localita;