Suma repetida de un valor.

26/12/2005 - 19:54 por Daniel G. Samborski | Informe spam
Hola, tengo el siguiente problema, espero que se entienda lo que trate de
explicar


select cliente.apellnomb,sum(ventas.imptotal)as Total,
sum(ctactepropia.monto)as Pagado,
max(ctactepropia.fecent)as Fecha
from cliente inner join ventas
on cliente.codcli = ventas.codcli and ventas.tipopago = 'CC' and
ventas.codentfin = 11
and ventas.estadoven = 'a' inner join ctactepropia on
ventas.codven = ctactepropia.codven and ventas.tipopago = 'CC' and
ventas.codentfin = 11
and ventas.estadoven = 'a' group by cliente.apellnomb

Resultado


PENNA MONICA 42.1500 15.0000 2005-12-15 21:28:00.000

Tabla Cliente

CodCli Apellnomb
2448 PENNA MONICA

Tabla Ventas

Codven Imptotal CodCli

65 18.18 2448
71 23.97 2448

Tabla CtaCtePropia

CodVen FechaEnt Monto
65 2005-12-15 21:28:00.000 10
71 2005-12-26 11:50:46.000 5

En la tabla ctactepropia se van guardando las entregas de cada venta

Al tener una sola entrega como el ejemplo anterior el Total es correcto.

si agregamos otro pago la tabla CtaCtePropia queda así:

CodVen FechaEnt Monto
65 2005-12-15 21:28:00.000 10
71 2005-12-26 11:50:46.000. 5
71 2005-12-26 11:56:34.000 8


Resultado

PENNA MONICA 66.1200 23.0000 2005-12-26 11:56:34.000

El Resultado es incorrecto porque debería dar el mismo importe el Total ya
que es el mismo
(42.1500) resultado de 18.18 + 23.97

Lo que descubrí que está pasando es que realiza la siguiente cuenta:
(23.97 + 23.97) + 18.18, osea suma el ImpTotal de cada venta por cada pago
que se va

agregando a la venta, mientras que el Pagado sigue siendo correcto.

Si agrego otro pago a la venta de cualquier importe triplica el resultado:
(23.97+23.97+23.97) + 18.18


Daniel.

Preguntas similare

Leer las respuestas

#1 Ele
26/12/2005 - 23:33 | Informe spam
revisa este codigo si te sirve de algo..
select a.apellnomb,
sum(b.imptotal)as Total,
sum(c.monto)as Pagado,
max(c.fecent)as Fecha
from cliente a
inner join ventas b
on b.codcli = a.codcli
/*esta es una tabla derivada*/
inner join(
Select codven, Sum(monto) as monto , Max(fecent) as fecent
From ctactepropia
Group By codven
) c
on c.codven = b.codven
Where b.tipopago = 'CC'
and b.codentfin = 11
and b.estadoven = 'a'
group by a.apellnomb

"Daniel G. Samborski" escribió en
el mensaje news:
Hola, tengo el siguiente problema, espero que se entienda lo que trate de
explicar


select cliente.apellnomb,sum(ventas.imptotal)as Total,
sum(ctactepropia.monto)as Pagado,
max(ctactepropia.fecent)as Fecha
from cliente inner join ventas
on cliente.codcli = ventas.codcli and ventas.tipopago = 'CC' and
ventas.codentfin = 11
and ventas.estadoven = 'a' inner join ctactepropia on
ventas.codven = ctactepropia.codven and ventas.tipopago = 'CC' and
ventas.codentfin = 11
and ventas.estadoven = 'a' group by cliente.apellnomb

Resultado


PENNA MONICA 42.1500 15.0000 2005-12-15 21:28:00.000

Tabla Cliente

CodCli Apellnomb
2448 PENNA MONICA

Tabla Ventas

Codven Imptotal CodCli

65 18.18 2448
71 23.97 2448

Tabla CtaCtePropia

CodVen FechaEnt Monto
65 2005-12-15 21:28:00.000 10
71 2005-12-26 11:50:46.000 5

En la tabla ctactepropia se van guardando las entregas de cada venta

Al tener una sola entrega como el ejemplo anterior el Total es correcto.

si agregamos otro pago la tabla CtaCtePropia queda así:

CodVen FechaEnt Monto
65 2005-12-15 21:28:00.000 10
71 2005-12-26 11:50:46.000. 5
71 2005-12-26 11:56:34.000 8


Resultado

PENNA MONICA 66.1200 23.0000 2005-12-26 11:56:34.000

El Resultado es incorrecto porque debería dar el mismo importe el Total ya
que es el mismo
(42.1500) resultado de 18.18 + 23.97

Lo que descubrí que está pasando es que realiza la siguiente cuenta:
(23.97 + 23.97) + 18.18, osea suma el ImpTotal de cada venta por cada pago
que se va

agregando a la venta, mientras que el Pagado sigue siendo correcto.

Si agrego otro pago a la venta de cualquier importe triplica el resultado:
(23.97+23.97+23.97) + 18.18


Daniel.


Respuesta Responder a este mensaje
#2 Daniel G. Samborski
28/12/2005 - 00:42 | Informe spam
Muchas gracias.
Me sirvio de maravillas.

Daniel.

"Ele" escribió en el mensaje
news:
revisa este codigo si te sirve de algo..
select a.apellnomb,
sum(b.imptotal)as Total,
sum(c.monto)as Pagado,
max(c.fecent)as Fecha
from cliente a
inner join ventas b
on b.codcli = a.codcli
/*esta es una tabla derivada*/
inner join(
Select codven, Sum(monto) as monto , Max(fecent) as fecent
From ctactepropia
Group By codven
) c
on c.codven = b.codven
Where b.tipopago = 'CC'
and b.codentfin = 11
and b.estadoven = 'a'
group by a.apellnomb

"Daniel G. Samborski" escribió
en
el mensaje news:
Hola, tengo el siguiente problema, espero que se entienda lo que trate de
explicar


select cliente.apellnomb,sum(ventas.imptotal)as Total,
sum(ctactepropia.monto)as Pagado,
max(ctactepropia.fecent)as Fecha
from cliente inner join ventas
on cliente.codcli = ventas.codcli and ventas.tipopago = 'CC' and
ventas.codentfin = 11
and ventas.estadoven = 'a' inner join ctactepropia on
ventas.codven = ctactepropia.codven and ventas.tipopago = 'CC' and
ventas.codentfin = 11
and ventas.estadoven = 'a' group by cliente.apellnomb

Resultado


PENNA MONICA 42.1500 15.0000 2005-12-15 21:28:00.000

Tabla Cliente

CodCli Apellnomb
2448 PENNA MONICA

Tabla Ventas

Codven Imptotal CodCli

65 18.18 2448
71 23.97 2448

Tabla CtaCtePropia

CodVen FechaEnt Monto
65 2005-12-15 21:28:00.000 10
71 2005-12-26 11:50:46.000 5

En la tabla ctactepropia se van guardando las entregas de cada venta

Al tener una sola entrega como el ejemplo anterior el Total es correcto.

si agregamos otro pago la tabla CtaCtePropia queda así:

CodVen FechaEnt Monto
65 2005-12-15 21:28:00.000 10
71 2005-12-26 11:50:46.000. 5
71 2005-12-26 11:56:34.000 8


Resultado

PENNA MONICA 66.1200 23.0000 2005-12-26 11:56:34.000

El Resultado es incorrecto porque debería dar el mismo importe el Total
ya
que es el mismo
(42.1500) resultado de 18.18 + 23.97

Lo que descubrí que está pasando es que realiza la siguiente cuenta:
(23.97 + 23.97) + 18.18, osea suma el ImpTotal de cada venta por cada
pago
que se va

agregando a la venta, mientras que el Pagado sigue siendo correcto.

Si agrego otro pago a la venta de cualquier importe triplica el
resultado:
(23.97+23.97+23.97) + 18.18


Daniel.






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida