Ver Mensaje Individual
  #1  
Antiguo Hace 1 Día
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 948
Reputación: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
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
Responder Con Cita