No sé si sería una opción, pero algunos componentes de acceso a datos permiten realizar consultas sobre la BD y a continuación ejecutar consultas sql sobre este primer resultado.
Lo utilice hace un tiempo en un proceso un tanto particular con Firedac
Contula_BD1=
Código SQL
[-]Select * from TablaX join TablaY on X.id=Y.id
Contula_BD2=
Código SQL
[-]Select * from TablaX join TablaY on X.id=Y.id
El resultado de las dos primeras consultas se utiliza como tablas para la consulta final
Consulta_Final=
Código SQL
[-]Select * from Contula_BD1 join Contula_BD2 on (.......)
Saludos ...