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 13-12-2012
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 22
marcial Va por buen camino
Question Ayuda SQL Firebird

Hola a todos.
Trabajo con D5, Firebird 2.1 y FibPuls
Mi problema es el siguiente:
Tengo dos tablas: CABECERAS y COBROS en las que se almacenan todos los documentos facturados en una y todos los cobros en otra.
He de sacar un listado y en CADA LINEA ha de aparecer:

Cliente --- Documento --- Fecha --- Importe Documento --- Importe Cobros (SUMA de todos los cobros de ese documento) --- Pendiente Documento

((El documento es único, pero puede haber muchos cobros del mismo documento))

la sentencia que uso es:

Código SQL [-]
SELECT cabeceras.codcliente, Cabeceras.NombreCliente, Cabeceras.SerieDocumento,
 Max(Cabeceras.Fecha) as Fecha, Sum(Cabeceras.TotalFinal) as TotalFinal, Sum(Cobros.ImporteCobro) as ImporteCobro, 
Sum(Cobros.PendienteDocumento) as PendienteDocumento 
from cabeceras left join COBROS on CABECERAS.seriedocumento = cobros.serieDOCUMENTO
group by cabeceras.SerieDocumento, Cabeceras.CodCliente, Cabeceras.NombreCliente order by CABECERAS.CODCLIENTE, CABECERAS.SERIEDOCUMENTO

El resultado que obtengo es:

Si un documento en Cabeceras NO tiene cobros = La linea es correcta.
Si un documento en Cabeceras tiene UN solo cobro = La linea es correcta.

Ahora bien, cuando un documento tiene varios cobros, el importe documento lo suma tantas veces como cobros tenga, es decir:

Si el total euros de un documento es de 100 y se han hecho 4 cobros de 25 cada uno, en la linea pone lo siguiente:

Total Documento 400 -- Total Cobros 100 --- en lugar de poner Total Documento: 100 --- Total Cobros: 100

Espero haberme explicado y que podais ayudarme.

Muchas gracias

Última edición por Casimiro Notevi fecha: 13-12-2012 a las 18:49:46.
Responder Con Cita
  #2  
Antiguo 14-12-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola Marcial

Como el campo TOTALFINAL es un valor del total de la factura no hay que sumarlas, ésta es la SQL que buscas.
Código SQL [-]
SELECT
    C.CODCLIENTE
    ,C.NOMBRECLIENTE
    ,C.SERIEDOCUMENTO
    ,(SELECT
          MAX(FECHA)
        FROM Cabeceras
        WHERE CODCLIENTE = C.CODCLIENTE
     ) AS FECHACABECERA
    ,TOTALFINAL
    ,(SELECT
          SUM(IMPORTECOBRO)
        FROM Cobros
        WHERE CLIENTECOD = C.CODCLIENTE
     ) AS TOTALIMPORTECOBRADO
    ,(SELECT
          SUM(PENDIENTEDOCUMENTO)
        FROM Cobros
        WHERE CLIENTECOD = C.CODCLIENTE
     ) AS TOTALIMPORTEDOCUMENTO
    ,TOTALFINAL - (SELECT <-- Esta parte es de mi cosecha para hayar el importe pendiente de cobrar
                       SUM(IMPORTECOBRO)
                     FROM Cobros
                     WHERE CLIENTECOD = C.CODCLIENTE
                  ) AS TOTALIMPORTEPENDIENTE
  FROM Cabeceras AS C
  ORDER BY C.CODCLIENTE, C.SERIEDOCUMENTO
Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por Casimiro Notevi fecha: 14-12-2012 a las 11:38:09.
Responder Con Cita
  #3  
Antiguo 14-12-2012
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 22
marcial Va por buen camino
Gracias Olbeup por resolverme el problema. Gracias a vuestra ayuda voy entrando en el SQL
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 Firebird pelikno Conexión con bases de datos 2 28-03-2012 02:50:52
Ayuda Con Firebird! seba89 Firebird e Interbase 3 27-03-2008 15:18:16
Ayuda con firebird Ubed Conexión con bases de datos 1 06-02-2008 17:53:53
Ayuda con Firebird Blackspike Conexión con bases de datos 5 26-06-2007 17:10:17
Ayuda Con Firebird claudianiev Impresión 4 01-10-2006 01:27:31


La franja horaria es GMT +2. Ahora son las 12:36:13.


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