Esto no responde a tu pregunta, es más por mi curiosidad.
O no he entendido lo que quieres hacer con la query o ¿no te devolvería lo mismo esta?
Código:
SELECT U.unidad, count(*)
FROM unidades U
WHERE U.Obra = 6012
group by U.Unidad
No tienes que hacer niguna join, cosa que te ahorrá tiempo. Además, lo que tu haces es una subselect sincronizada, cosa costosiiiiiiiiiiiiiiiiisima.
Si me he empanao y no he entendido tu intención, comentamelo, por favor.