SQL - Srita.

 
Vista:

Srita.

Publicado por Chayo (5 intervenciones) el 21/01/2009 00:25:23
Buen día.
Estoy tratando de hacer un reporte de inventario, tengo las tablas
ENTRADA_DES (id_entrada, id_partida, id_art, cantidad)
SALIDA_DES (id_salida, id_partida, id_art, cantidad)

Lo que quiero saber es cómo hacerle para consultar la diferencia entre la cantidad que entró y la catidad que salió para cada artículo.

hasta ahora tengo:
select id_art, sum(cantidad) from Entrada_des group by id_art
y
select id_art, sum(cantidad) from Salida_des group by id_art

cómo le hago para encontrar : suma(entradas)-suma(salidas) de cada artículo

intenté esto:
select sum(entrada_des.cantidad), sum(salida_des.cantidad) from entrada_desinner join salida_des on entrada_des.idart=salida_des.idart group by entrada_des.idart

pero no me salen los valores correctos.

Qué es lo que debo hacer?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Srita.

Publicado por Angeles (12 intervenciones) el 21/01/2009 12:32:20
Lo mas sencillo es crearte dos consultas, una para entrada y otra para salida como las que tienes y relacionar estas dos consultas:

select id_art, sum(cantidad) as CantEntrada from Entrada_des group by id_art

select id_art, sum(cantidad) as CantSalida from Entrada_des group by id_art

Estas dos consultas las relacionarias por el id_art y restarias:

CantEntrada-CantSalida

Saludos, angeles
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Srita.

Publicado por m (16 intervenciones) el 21/01/2009 23:36:58
Hola, la respuesta de Angeles esta bien
solo que un poco incompleta,
mmmmmhhhhhh vamos a hacer una consulta sencilla.
Te dare un ejemplo didactico en este ejemplo usare nombres de campos
diferentes a los tuyos solo es cuestion de que lo adaptes a tu consulta:


SELECT partidaId,productoID, sum(cantidad) cantidad
from entradas
group by partidaID,productoID
UNION
SELECT partidaID,productoID,sum(-cantidad) cantidad
from salidas
group by partidaID,productoID

Con este query ordenaremos y unimos los datos por partidas las entradas son positivas,
las salidas son negativas.

Ahora solo nos falta calcular la diferencia que seria asi:


SELECT productoID, sum(cantidad) Diferencia
from(
SELECT partidaId,productoID, sum(cantidad) cantidad
from entradas
group by partidaID,productoID
union
SELECT partidaID,productoID,sum(-cantidad) cantidad
from salidas
group by partidaID,productoID) as TablaDiferencias
Group by productoID

Listo con esto obtienes los valores entrada-salida de cada producto
agrupado por Partida.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Srita.

Publicado por Liliana (426 intervenciones) el 22/01/2009 12:07:41
Hola,

Bueno, no estabas tan lejos en tu consulta para llegar al resultado deseado, pero al relacionar ambas tablas con INNER JOIN, solo te devuelve aquellos artículos de los que hayas tenido Entradas y Salidas.
En estos casos hay que usar la función ISNULL porque no sabrás si habrá movimientos en ambas tablas para cada artículo, y la combinación de las tablas deberá ser con FULL JOIN.

SELECT Articulo = ISNULL (E.Idart, S.Idart),
Stock = SUM ( ISNULL (E.cantidad,0)) - SUM ( ISNULL (S.cantidad,0))
FROM entrada_desinner E
FULL JOIN salida_des S ON E.idart = S.idart
GROUP BY ISNULL (E.Idart, S.Idart)

Te recomiendo ver en la ayuda el funcionamiento de la función ISNULL y de FULL JOIN.
Saludos,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Srita.

Publicado por Chayo (5 intervenciones) el 26/01/2009 18:48:08
Muchas gracias por la ayuda!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar