Ver Mensaje Individual
  #15  
Antiguo 14-03-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Reputación: 21
MaMu Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
Creo que podemos utilizar una consulta menos complicada y más eficiente al no usar tantas subconsultas:


Código SQL [-]
select
categoria,
sum(if(year(fecha)=2007, debe, 0)) as egreso2007,
sum(if(year(fecha)=2007, haber, 0)) as ingreso2007,
sum(if(year(fecha)=2008, debe, 0)) as egreso2008,
sum(if(year(fecha)=2008, haber, 0)) as ingreso2008
from caja
group by categoria




Al final de cuentas, no requerimos enlazar a la tabla parapersonales. Lo único que necesitamos es que nuestro motor acepte algún tipo de condicional. En el ejemplo uso el IF de MySQL.



Bye
De todas maneras me encuentro con otro problema, porque la consulta me devolvería ambos resultados agrupados, es decir:

Año 2008---------Año 2007
categoria1 2008 categoria1 2008
categoria2 2008 categoria2 2008
categoria3 2008 categoria3 2008
categoria4 2007 categoria4 2007

y yo solo quiero encolumnar donde hubiese resultado ya que es para hacer una comparación paralela, asi:

Año 2008---------Año 2007
categoria1 2008 categoria1 ----
categoria2 2008 categoria2 ----
categoria3 2008 categoria3 ----
categoria4 ---- categoria4 2007

lo que agrego es la fecha, para poder mostrarla

Código SQL [-]
 
select
categoria, fecha,
sum(if(year(fecha)=2007, debe, 0)) as egreso2007,
sum(if(year(fecha)=2007, haber, 0)) as ingreso2007,
sum(if(year(fecha)=2008, debe, 0)) as egreso2008,
sum(if(year(fecha)=2008, haber, 0)) as ingreso2008 
from caja
group by categoria

y en cuyo caso en que en ambos años haya resultados, me repetiria la categoria, asi:

Año 2008---------Año 2007
categoria5 2008 categoria5 2008
categoria5 2007 categoria5 2007

lo que me complica la visualización para comparar.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita