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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Ariel M.
26/04/2011 - 20:51 | Informe spam
On 21 abr, 23:24, "Leonardo Azpurua" wrote:
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 mensajenews: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!
> Saludos. Ariel



Leonardo funcionó tal y como yo quería, muchas gracias (una vez mas).
Saludos. Ariel
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida