Funcion para calcular balance

06/05/2007 - 18:46 por principiante | Informe spam
Tengo una tabla: facturas(numerofactura,codigocliente, valor,fecha)
y otra tabla: pagos(numeropago, numerofactura, valorpagado, fechapago)
Es una relacion de 1 a N. (1 factura puede tener N pagos).

Y necesito hacer una funcion para calcular el balance de un cliente a una
fecha.

Me pueden ayudar con el select para armar la funcion?
Tengo la idea pero no tengo claro como hacer el sum:

select facturas.valor, sum(pagos.valorpagado) as pagado
from facturas
inner join pagos on pagos.numerofactura=facturas.numerofactura and
pagos.fechapago<@fecha
where cliente=@cliente and facturas.fecha<@fecha
group by facturas.valor

Lo que debo devolver es un solo valor ya que el select indicado me lo da
para cada factura.
Nota: debe estar dentro de una funcion.

Gracias

Jose TH
 

Leer las respuestas

#1 Javier Loria
07/05/2007 - 01:53 | Informe spam
Hola;
La consulta para una sola factura seria:
=SELECT
SUM(Facturas.valor) AS Ventas
, SUM(Pagos.Valorpagado) as Pagos
, SUM(Facturas.valor) - SUM(Pagos.Valorpagado) AS Saldoso
FROM facturas
INNER JOIN pagos
ON Fagos.numerofactura=facturas.numerofactura
and pagos.fechapago<@fecha
where cliente=@cliente
and facturas.fecha<@fecha
= La consulta para todos los clientes:
SELECT facturas.cliente
SUM(Facturas.valor) AS Ventas
, SUM(Pagos.Valorpagado) as Pagos
, SUM(Facturas.valor) - SUM(Pagos.Valorpagado) AS Saldoso
FROM facturas
INNER JOIN pagos
ON Pagos.numerofactura=facturas.numerofactura
and pagos.fechapago<@fecha
where facturas.fecha<@fecha
GROUP BY Facturas.Cliente
= Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

"principiante" wrote in message
news:%23wCFV4$
Tengo una tabla: facturas(numerofactura,codigocliente, valor,fecha)
y otra tabla: pagos(numeropago, numerofactura, valorpagado, fechapago)
Es una relacion de 1 a N. (1 factura puede tener N pagos).

Y necesito hacer una funcion para calcular el balance de un cliente a una
fecha.

Me pueden ayudar con el select para armar la funcion?
Tengo la idea pero no tengo claro como hacer el sum:

select facturas.valor, sum(pagos.valorpagado) as pagado
from facturas
inner join pagos on pagos.numerofactura=facturas.numerofactura and
pagos.fechapago<@fecha
where cliente=@cliente and facturas.fecha<@fecha
group by facturas.valor

Lo que debo devolver es un solo valor ya que el select indicado me lo da
para cada factura.
Nota: debe estar dentro de una funcion.

Gracias

Jose TH

Preguntas similares