Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
consulta

Buenos dias, queria saber si puedo montar esto en una consulta.

Tengo una tabla A (tipo,fecha,importe)

el Tipo es pago o cobro. Necesito obtener, el sumatorio de pagos, el sumatorio de cobro, y la diferencia entre ambos, ordenado por fecha en la misma consulta si puede ser.

Es para mostrarlo en un informe de Repord Builder.Si hay alternativas a la única consulta las acepto

gracias.
Responder Con Cita
  #2  
Antiguo 14-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Tengo una tabla A (tipo,fecha,importe)

el Tipo es pago o cobro. Necesito obtener, el sumatorio de pagos, el sumatorio de cobro, y la diferencia entre ambos, ordenado por fecha en la misma consulta si puede ser.
Código SQL [-]
 
select C.id,
(select SUM(A.importe) from tabla A where A.tipo="cobro" and A.id=C.id) as SumaCobro,
(select SUM(B.importe) from tabla B where B.tipo="pago"and B.id=C.id) as SumaPago,
((select SUM(D.importe) from tabla D where D.tipo="cobro" and D.id=C.id)-

(select SUM(E.importe) from tabla E where E.tipo="pago" and E.id=C.id))as DiferenciaCobroPago
from tabla C order by fecha

No tengo ni Delphi ni SQL a mano, pero debería ser algo similar, no creo estar tan pero tan errado. Capaz algo te orienta a que te des cuenta.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #3  
Antiguo 14-04-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
que crack!!

Genial, muchisimas gracias.....

Sabes como hacer que los campos vacios(nulos) los convierta a 0? por que si me saca nulos esa fila ya no me opera.
Responder Con Cita
  #4  
Antiguo 14-04-2008
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 70
Poder: 21
bismarck_sierra Va por buen camino
Convertir nulos a ceros depende del manejador de base de datos que utilices, por ejemplo, en firebird es COALESCE.

El ejemplo de consulta que te proporcionó "mamu" funciona en cualquier manejador, pero si quieres optimizarla ya sería dependiendo de cual utilices, en firebird puedes utilizar CASE, como comentas que es en una sola tabla, con CASE solo harías un sólo SELECT, en lugar de 5.

Saludos
Responder Con Cita
  #5  
Antiguo 14-04-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
coalesce

es firebird 1.5 , pero como aplico el coalesce en la consulta de arriba, dentro del parntesis de cada campo? despues del select?help
Responder Con Cita
  #6  
Antiguo 15-04-2008
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
Debe funcionar asi :

Código SQL [-]
select SUM(coalesce(A.importe,0)) from tabla A
Responder Con Cita
  #7  
Antiguo 15-04-2008
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 70
Poder: 21
bismarck_sierra Va por buen camino
consulta optimizada

Si te entendí bien, una consulta optimizada sería así:

Código SQL [-]
SELECT fecha, 
COALESCE(SUM(CASE tipo WHEN 'PAGO' THEN importe END), 0) AS pagos,
COALESCE(SUM(CASE tipo WHEN 'COBRO' THEN importe END), 0) AS cobros, 
SUM(COALESCE(CASE tipo WHEN 'COBRO' THEN importe END, 0) -
COALESCE(CASE tipo WHEN 'PAGO' THEN importe END, 0))  AS diferencia
FROM tabla GROUP BY fecha

Sólo asegurate de tener un índice sobre el campo fecha.

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Consulta dentro de otra consulta judit25 Conexión con bases de datos 1 25-06-2007 15:52:15
consulta sobre consulta superhopi SQL 2 16-05-2003 19:01:47


La franja horaria es GMT +2. Ahora son las 22:51:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi