Delphi - Duda sobre agrupar

 
Vista:

Duda sobre agrupar

Publicado por Edu Rod (66 intervenciones) el 05/06/2003 20:36:26
Tengo un problema, estoy haciendo un sistema para una muebleria que vende a credito, y los clientes firman pagares que son documentos por valor de dinero, se firman 12 pagos, y un cliente puede pagar dar un pago y atrasarse.
Lo que yo ocupo es saber de cada cliente cuantos documentos no ha pagado, yo tengo las fechas de venciemiento, los saldos, pero no se como agrupar para que me de por ejemplo:
Cliente "x" atraso "8 " valor"1000"

Espero me ayuden gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda sobre agrupar

Publicado por BigLuis (463 intervenciones) el 05/06/2003 21:15:55
Como en todo hay mil formas pero se me ocurre que podías hacer una tabla maestra de clientes y una relacionada con los doce o mil pagos de la compra realizada.A esta relacionada le añades un campo Booleano o String[1] (S, N).Cada vez que pague un plazo le anotas S o TRue y el resto te lo imaginas= (Select C.Nombre,P.Fecha,P.Cantidad from clientes C, plazos P where C.IDClientes=P.RefClientes and P.Pagado="N" 0 False).Te listara todos los clientes que no han pagado creando un registro con los datos solicitados por cada plazo impagado.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sobre agrupar

Publicado por Delfino (1216 intervenciones) el 06/06/2003 00:16:01
Sera algo asi creo:
Select cliente, sum(pago)
From clientes
Group By cliente
Having sum(pago) < saldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda sobre agrupar

Publicado por Delfino (1216 intervenciones) el 06/06/2003 00:18:59
Sera algo asi creo:
Select cliente, sum(pago)
From clientes
Group By cliente
Having sum(pago) < saldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Este es mi qry para q se den..

Publicado por Edu Rod (66 intervenciones) el 06/06/2003 02:08:58
Para que se den una idea este es el query que ahorita tengo, y quiero agregarle lo que les comente, este query me trae los doctos. que no estan pagados y me trae todo el record pero yo quiero que me ponga al principio los que tienen un pago pendiente, luego los de 2 pagos pendientes, luego los de 3 y asi sucesivamente...El query es este
SELECT CONTRATO.CONTRATO, CONTRATO.NOMBRE_IM, CONTRATO.SERIE, CONTRATO.MARCA_IM, CONTRATO.MODELO_IM, CONTRATO.LINEA_IM, CONTRATO.ANTICIPO, Contdpag.FECHAREAL, Contdpag.LETRA, Contdpag.IMPORTE, CONTRATO.COBRADOR, Contdpag.DOC_SALDO, Contdpag.LETRA1
FROM CONTRATO
INNER JOIN "C:\Documents and Settings\Hector\Mis documentos\ALondres\ventas\CONTDPAG.DBF" Contdpag
ON (Contdpag.CONTRATO = CONTRATO.CONTRATO)
WHERE CONTRATO.FECHAREAL BETWEEN '03/01/2002' AND '05/31/2003'
AND Contdpag.FECHAREAL BETWEEN '03/01/2002' AND '06/30/2003'
AND (Contdpag.DOC_SALDO > 0)
ORDER BY CONTRATO.COBRADOR, CONTRATO.CONTRATO, Contdpag.FECHAREAL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Este es mi qry para q se den..

Publicado por Ernesto De Spirito (706 intervenciones) el 06/06/2003 23:49:36
Lo que tienes que hacer es usar funciones de agrupamiento como COUNT (para contar la cantidad de pagarés adeudados) y SUM (para sumar los montos adeudados), y en la cláusula GROUP BY listas todos los demás campos que figuran en el SELECT pero que no son datos agrupados:

SELECT CONTRATO.CONTRATO, CONTRATO.NOMBRE_IM, CONTRATO.SERIE, CONTRATO.MARCA_IM, CONTRATO.MODELO_IM, CONTRATO.LINEA_IM, CONTRATO.ANTICIPO, Contdpag.FECHAREAL, Contdpag.LETRA, Contdpag.IMPORTE, CONTRATO.COBRADOR, Contdpag.LETRA1, SUM(Contdpag.DOC_SALDO), COUNT(*)
FROM CONTRATO
INNER JOIN "C:\Documents and Settings\Hector\Mis documentos\ALondres\ventas\CONTDPAG.DBF" Contdpag
ON (Contdpag.CONTRATO = CONTRATO.CONTRATO)
WHERE CONTRATO.FECHAREAL BETWEEN '03/01/2002' AND '05/31/2003'
AND Contdpag.FECHAREAL BETWEEN '03/01/2002' AND '06/30/2003'
AND (Contdpag.DOC_SALDO > 0)
GROUP BY CONTRATO.CONTRATO, CONTRATO.NOMBRE_IM, CONTRATO.SERIE, CONTRATO.MARCA_IM, CONTRATO.MODELO_IM, CONTRATO.LINEA_IM, CONTRATO.ANTICIPO, Contdpag.FECHAREAL, Contdpag.LETRA, Contdpag.IMPORTE, CONTRATO.COBRADOR, Contdpag.LETRA1
ORDER BY CONTRATO.COBRADOR, CONTRATO.CONTRATO, Contdpag.FECHAREAL

Espero que te sirva.

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar