Código SQL
[-]Select BO.DATEFROM, BO.DATETO, CA2.CATEGORYNO,
(Select Count(*) from OBJECTS OB
left join CATEGORIES CA1
on OB.CATEGORYNO = CA1.CATEGORYNO
and CA1.SUBCATEGORYNO = 0
where OB.BUILDINGNO = 1
and CA1.CATEGORYNO = CA2.CATEGORYNO) as SumCount
from BOOKINGS_OBJECTS_TEMP BO
left join CATEGORIES CA2
on BO.CATEGORYNO = CA2.CATEGORYNO
and CA2.SUBCATEGORYNO = 0
where CA2.DIVISIONTYPE = 0
and CA2.OBJECTRESERVATION = 0
group by BO.DATEFROM, BO.DATETO, CA2.CATEGORYNO
Basta con cambiar BO.CATEGORYNO por CA2.CATEGORYNO. Así funciona correctamente la consulta.
Al parecer Firebird 2.1 no entiende la referencia (asunto que realmente es correcto) a BO.CATEGORYNO como campo devuelto por BOOKINGS_OBJECTS_TEMP cuyo alias es BO, sino al ser un campo devuelto por el left join de la consulta principal (CATEGORIES) cuyo alias es CA2, pues por lo visto, y vuelvo a decir que con razón, hay que referenciarlo por los alias como CA2 y no como BO, al igual que lo referencia en el Select propio o en el Group By.
Vamos, que Firebird me ha detectado realmente un error de referencias que Interbase acepta.
