Ayuda con sentencia SQL

14/04/2011 - 22:52 por Ariel M. | Informe spam
Buenas tardes a todos. Tengo dos tablas: VENTAS y PAGOS, las cuales
están relacionadas por el id de cliente y hay registros en distintas
fechas en ambas tablas. Cuando consulto con el id de cliente anda todo
bien, pero ahora tengo que armar una consulta en donde me sume los
totales de Ventas y totales de Pagos pero por fecha.
Estuve probando distintas alternativas, pero cuando relaciono las fechas
de las tablas con un LEFT JOIN o RIGHT JOIN me trae ambos valores pero
solamente con las fechas que encuentra en una de las tablas (según si
uso LEFT o RIGHT).
Alguien me puede ayudar a armar algo como:

FECHA VENTAS PAGOS
01/4/2011 210,56 0,00
03/4/2011 1.103,45 355,66
05/4/2011 0,00 989,77
10/4/2011 0,00 210,00
13/4/2011 120,00 100,34
15/4/2011 155,67 0,00

Desde ya muchas gracias.
Saludos. Ariel
 

Leer las respuestas

#1 Leonardo Azpurua
22/04/2011 - 04:24 | Informe spam
Hola Ariel,

No dices cual es la estructura de las tablas, así que supongamos el
modelo más simple:

VENTAS:
Cliente, ID, Fecha, Monto

PAGOS:
Cliente, ID, Fecha, Monto

Lo primero es unirlas:

SELECT Cliente, ID, Fecha, Monto, 'V' As Operacion
FROM VENTAS
UNION
SELECT Cliente, ID, Fecha, Monto, 'P'
FROM PAGOS

y luego usar esa union para armar la consulta:

SELECT Fecha,
SUM(CASE WHEN Operacion = 'V' THEN Monto ELSE 0
END) As TotVenta,
SUM(CASE WHEN Operacion = 'P' THEN Monto ELSE 0
END) As TotPago
FROM (
SELECT Cliente, ID, Fecha, Monto, 'V' As Operacion
FROM VENTAS
UNION
SELECT Cliente, ID, Fecha, Monto, 'P'
FROM PAGOS
) U
WHERE Fecha BETWEEN tal AND cual
AND Cliente = talOtro
GROUP BY Fecha

La sintaxis del condicional es de T/SQL. Si fuera Access usarías

SUM(Iif(Operacion = 'V', Monto, 0))

tengo tiempo que no hago nada con Access, pero creo que la subconsulta
debería funcionar.

Salud!



"Ariel M." escribió en el mensaje
news:io7mq1$260$
Buenas tardes a todos. Tengo dos tablas: VENTAS y PAGOS, las cuales
están relacionadas por el id de cliente y hay registros en distintas
fechas en ambas tablas. Cuando consulto con el id de cliente anda
todo bien, pero ahora tengo que armar una consulta en donde me sume
los totales de Ventas y totales de Pagos pero por fecha.
Estuve probando distintas alternativas, pero cuando relaciono las
fechas de las tablas con un LEFT JOIN o RIGHT JOIN me trae ambos
valores pero solamente con las fechas que encuentra en una de las
tablas (según si uso LEFT o RIGHT).
Alguien me puede ayudar a armar algo como:

FECHA VENTAS PAGOS
01/4/2011 210,56 0,00
03/4/2011 1.103,45 355,66
05/4/2011 0,00 989,77
10/4/2011 0,00 210,00
13/4/2011 120,00 100,34
15/4/2011 155,67 0,00

Desde ya muchas gracias.
Saludos. Ariel

Preguntas similares