Estimado colega, mirando su problema le propongo la siguiente solución...
1) Crear procedimento para acceder a los datos desde las distintas bases de datos
Código SQL
[-]
create or alter procedure sp_ventas_from_year(ventas_year integer)
returns (id integer, ventas double)
as
begin
for
execute
statement ('select id, ventas
from pedidos')
on external data source 'c:\Datos'||:ventas_year||'\ventas.fdb' as user current_user password 'masterkey'
into :id,
:ventas
do
begin
suspend;
end
end
2) Test para probar consultas
Código SQL
[-]
//Obtener las ventas del año 2025
select a.id,
a.ventas
from sp_ventas_from_year(2025) a
//Obtener las ventas del año 2026
select a.id,
a.ventas
from sp_ventas_from_year(2026) a
3) Consulta comparando ventas de ambos años de cada ID
Puede crear una vista con estas consultas...O incluirlas todas en un TIBQuery
Código SQL
[-]
--Todos este código debe estar en TIBQuery
--Ventas con id en ambos años
select
v2025.id,
v2025.ventas vtas_2025,
v2026.ventas vtas_2026
from SP_VENTAS_FROM_YEAR(2025) v2025 --ventas_2025
inner join SP_VENTAS_FROM_YEAR(2026) v2026 on (v2025.id = v2026.id)
union all
--Ventas 2025 que no estan en 2026
select
v2025.id,
v2025.ventas as vtas_2025,
0 as vtas_2026
from SP_VENTAS_FROM_YEAR(2025) v2025
left outer join SP_VENTAS_FROM_YEAR(2026) v2026 on (v2025.id = v2026.id)
where (v2026.id is null)
union all
--Solo ventas del 2026 que no estan en 2025
select v2026.id,
0 as vtas_2025,
v2026.ventas vtas_2026
from SP_VENTAS_FROM_YEAR(2026) v2026
left outer join SP_VENTAS_FROM_YEAR(2025) V2025 on (v2026.id = v2025.id)
where (v2025.id is null)
Espero le sirva...Saludos cordiales