Hola a todos
Mi situación es la siguiente:
Utilizo Delphi 2007, Firebird 2.1. y me conecto con los Ib componentes.
Tengo tres tablas (Cuentas con unos 10 registros, AFT con unos 700 registros y Transac con unos 35 mil registros) el tamaño de la base de datos es de 3.3 mb.
El problema es que estoy realizándo aparentemente la misma consulta SQL de dos formas distintas:
La primer forma:
Código SQL
[-]Select Ctas.Codigo, Ctas.Descripcion, Sum(Tr.valor_resid)
From Cuentas Ctas, AFT, transac Tr
Where Ctas.Codigo = AFT.Cuenta
And Tr.Periodo = '07-02'
And AFT.Codigo = Tr.CodAft
Group by Ctas.Codigo, Ctas.Descripcion
De esta forma se realiza la consulta en un instante.
La segunda forma es la siguiente:
Código SQL
[-]Select Ctas.Codigo, Ctas.Descripcion,
Sum(Case When Ctas.codigo = AFT.Cuenta
And Tr.Periodo = '07-02'
Then (Tr.Valor_Resid)
else 0
End)
From Cuentas Ctas, AFT, transac Tr
Group by Ctas.Codigo, Ctas.Descripcion
De esta forma se demora como tres minutos procesando y al final me da el error <Insuficiente espacio en disco> y el disco tiene mas de tres gb libres.
Por supuesto la forma que necesito que me funcione es la segunda ya que debo incluir mas campos con otras condiciones.
Como me cansé de compilar tantas veces el programa ya pasé directamente ambas consultas con el IbExpert en la base de datos y el resultado es el mismo.
De antemanos muchas gracias por la ayuda que me puedan prestar.