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 18-05-2010
jfbaez jfbaez is offline
Registrado
 
Registrado: mar 2010
Posts: 4
Poder: 0
jfbaez Va por buen camino
Ayuda con esta consulta

Saludos a todos, tengo una pequeña laguna en esta consulta. Tengo dos tablas una de Debitos y otra de Creditos, y quiero presentar los debitos por facturas por un cliente especifico, el asunto esta en que quiero restar los montos que coincidan con el codigo del cliente y el numero de Debito de las tablas pero que tambien me traiga los debitos que no tiene movimiento en la tabla Creditos, mi consulta es esta,

Código SQL [-]
'SELECT Debitos.Fecha, Debitos.Tipo_Doc, Debitos.Numero,'+
'(Debitos.Monto - RCreditos.Monto) AS MontoT FROM Debitos,'+
'(SELECT Num_Debito, SUM(Monto) AS Monto FROM Creditos Where codigo = '+Edit1.Text+' GROUP BY Num_Debito)'+
'AS RCreditos WHERE (Debitos.Numero = RCreditos.Num_Debito) AND'+
' ((Debitos.Monto - RCreditos.Monto) > 0)'+
'ORDER BY Debitos.Numero';



Gracias de antemano...

Última edición por delphi.com.ar fecha: 18-05-2010 a las 00:10:55. Razón: Etiqueta SQL
Responder Con Cita
  #2  
Antiguo 18-05-2010
jfbaez jfbaez is offline
Registrado
 
Registrado: mar 2010
Posts: 4
Poder: 0
jfbaez Va por buen camino
Ayuda con esta consulta

Utilizo SQL Server 2000 y Delphi 7
Responder Con Cita
  #3  
Antiguo 18-05-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola jfbaez, para que te podamos ayudar mejor, sería bueno que pusieras tus tablas con los campos que entrarían en tu consulta y algunos datos que tienes y otra con el resultado que quieres obtener sobre esas tablas.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 18-05-2010
jfbaez jfbaez is offline
Registrado
 
Registrado: mar 2010
Posts: 4
Poder: 0
jfbaez Va por buen camino
Ayuda con esta consulta

Gracias Caro por tu respuesta y sugerencia, mis tablas son como sigue:

Debitos: Numero, Codigo, Fecha, Tipo_Doc, monto, status, concepto.

Creditos: Numero, Codigo, Num_Debito, Fecha, Tipo_Doc, monto, Status, Concepto.

La mision es traer los datos de la tabla Debitos que correspondan a un codigo espesifico, y los montos deben ser presentados con los creditos ya restados que estan en la tabla Creditos si tiene registro en la tabla, el asunto esta, que con la consulta de arriba solo me trae los registros que tengan movimiento en las dos tablas, y me gustaria traer los debitos que no tiene todavia credito aplicado.

Trate de ser un poco mas explicito en lo que deseo, y gracias por su atencion.
Responder Con Cita
  #5  
Antiguo 18-05-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo jfbaez, ahora si te endiendo mejor, tienes que hacer una consulta con Left Join:

Código SQL [-]
Select D.Fecha, D.Tipo_Doc, D.Numero, D.Monto-C.Monto
From debitos D Left Join (Select Num_Debito, Sum(monto) as Monto 
                          From creditos Where Codigo='+Edit1.Text+' Group by Num_Debito) C
     On D.Numero=C.Num_Debito
Where D.Codigo='+Edit1.Text+' and D.Monto-C.Monto>0

Sin la última condición obtendras los debitos que no tienen ningún registro en la tabla creditos, pero si añades la última condición no tomará en cuenta esos registros porque te devolvera un valor nulo, para resolver eso puedes utilizar la función COALESCE y quedaría así:

Código SQL [-]
Select D.Fecha, D.Tipo_Doc, D.Numero, D.Monto-COALESCE(C.Monto, 0)
From Debitos D Left Join (Select Num_Debito, Sum(monto) as Monto
                          From Creditos 
                          Where Codigo='+Edit1.Text+' Group by Num_Debito) C
     On D.Numero=C.Num_Debito
Where D.Codigo='+Edit1.Text+' and D.Monto-COALESCE(C.Monto, 0)>0

Espero haberte entendido, si no es eso sigue aclarando.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 18-05-2010 a las 17:14:28.
Responder Con Cita
  #6  
Antiguo 18-05-2010
jfbaez jfbaez is offline
Registrado
 
Registrado: mar 2010
Posts: 4
Poder: 0
jfbaez Va por buen camino
Wow!!! ese estilo de consulta me gusto bastante y funciona a la perfeccion. Muchas gracias por resolver este episodio y por el tiempo dedicado. DTB
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
Ayuda con esta consulta¡¡¡¡¡ Poke SQL 5 04-07-2016 20:32:33
Está bien esta consulta Select count? enecumene MySQL 12 30-08-2007 03:54:29
Esta consulta no me funciona brandolin Firebird e Interbase 1 12-02-2007 17:29:08
Que hace esta consulta agonzalez SQL 0 12-02-2004 20:30:29
Ayuda con esta consulta? danytorres SQL 1 10-10-2003 20:29:15


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


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