Ver Mensaje Individual
  #1  
Antiguo 13-12-2012
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Reputación: 24
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 Noteví fecha: 13-12-2012 a las 18:49:46.
Responder Con Cita