Ayuda con sentecia sql

05/03/2004 - 23:35 por Sergio Cota | Informe spam
Hola, espero puedan ayudarme.

Tengo en una BD 2 tablas, vtas y dev
en ventas se almacena el detalle de las facturas de una empresa, es decir,
los articulos incluidos en cada factura, y en dev el detalle de las
devoluciones de clientes.
vtas.codigo = codigo del producto
dev.codigo = codigo del producto
vtas.cantidad= cantidad de unidades vendidas
dev.cantidad= cantidad de unidades devueltas

Lo que quiero es obtener un listado de los artículos y sus unidades vendidas
y devueltas, y que si no tienen devoluciones esa casilla aparezca en blanco;
he intentado con lo siguiente sin exito:

SELECT vtas.codigo,SUM(vtas.cantidad),SUM(dev.cantidad) FROM vtas, dev WHERE
vtas.anio 03 and dev.anio 03 GROUP BY codigo

Y otra duda: Es posible hacer operaciones dentro de la misma sentencia?? por
ejemplo: restar en cada producto vtas.cantidad - dev.cantidad ???

Ojala y puedan ayudarme


Saludos
SErgio
 

Leer las respuestas

#1 Javier Loria
05/03/2004 - 23:51 | Informe spam
Hola Sergio:
Estabas bastante cerca:
==SELECT vtas.codigo
, SUM(vtas.cantidad)
, SUM(COALESCE(dev.cantidad,0))
FROM vtas
LEFT JOIN dev
ON vtas.Codigo=dev.Codigo
WHERE vtas.anio 03
AND dev.anio 03
GROUP BY codigo
== Los cambios son:
a) COALESCE que significa,si el numero es nulo, ponga lo siguiente que en
este caso es 0.
b) LEFT JOIN, que significa ponga todas las vtas relacionadas con las dev
usando como criterio de UNION la condicion que esta en el ON. Si alguna
alguna fila en vta no se puede unir con una dv, usela y deja la dev como
NULL.
c) ON Condicion de Union entre vtas y dev.

Saludos,


Javier Loria
Costa Rica
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.


Sergio Cota escribio:
Hola, espero puedan ayudarme.

Tengo en una BD 2 tablas, vtas y dev
en ventas se almacena el detalle de las facturas de una empresa, es
decir, los articulos incluidos en cada factura, y en dev el detalle
de las devoluciones de clientes.
vtas.codigo = codigo del producto
dev.codigo = codigo del producto
vtas.cantidad= cantidad de unidades vendidas
dev.cantidad= cantidad de unidades devueltas

Lo que quiero es obtener un listado de los artículos y sus unidades
vendidas y devueltas, y que si no tienen devoluciones esa casilla
aparezca en blanco; he intentado con lo siguiente sin exito:

SELECT vtas.codigo,SUM(vtas.cantidad),SUM(dev.cantidad) FROM vtas,
dev WHERE vtas.anio 03 and dev.anio 03 GROUP BY codigo

Y otra duda: Es posible hacer operaciones dentro de la misma
sentencia?? por ejemplo: restar en cada producto vtas.cantidad -
dev.cantidad ???

Ojala y puedan ayudarme


Saludos
SErgio

Preguntas similares