Hola sonjeux.
Esa consulta como está escrita no tendría que dar el error que mostras en la imágen. Seguramente sucede por como está ingresada en el componente
TIBQuery (pareciera que se te hubiera deslizado alguna comilla doble).
¿ Podrías hacer un copy/paste del código
Delphi donde asignas la cadena ?
Por otro lado, aunque la consulta no es incorrecta, opino que resulta mas simple de escribir e interpretar evitando las subconsultas:
Código SQL
[-]
SELECT AL.NOMBRE AS ALMACENNOMBRE,
PR.NOMBRE AS PRODUCTONOMBRE,
PR.PRECIOCSF AS PRODUCTOCOSTO, ST.*
FROM STOCK ST
INNER JOIN ALMACEN AL ON ST.IDALMACEN = AL.ID
INNER JOIN PRODUCTO PR ON ST.IDPRODUCTO = PR.ID
Saludos