SQL - Consulta SUM

   
Vista:

Consulta SUM

Publicado por licha (2 intervenciones) el 29/07/2013 18:49:12
Hola, tengo la sigiuente consulta, a ver si alguien me puede ayudar
Tengo 2 tablas, una de movimientos de stocks y otra que dice si el signo es positivo o negativo (ingreso o egreso) segun el campo tipomov
Dejo la consulta actual y los resultados
Y lo que quiero

1
2
3
4
5
select sd.arti, sd.depo, (select SM.signo from SM tipomovimientos SM where SM.id=SD.tipomovi) as Signo,
(select sd.cantidad * (select SM.signo from tipomovimientos SM where SM.id=SD.tipomovi)) as Cantidad
from movimientostock sd
where sd.arti=51 and sd.depo=17 and year(sd.fecha)=2013 and month(sd.fecha)=1
group by  sd.arti, sd.depo, year(sd.fecha), month(sd.fecha), sd.tipomovi, sd.cantidad


Esto me devuelve
1
2
3
4
Arti Depo Signo Cantidad
51	17	1	2.00
51	17	1	1.00
51	17	-1	-1.00


Yo quiero ahora una consulta que me devuelva
51 17 1 2.00
(un solo registro para ese articulo y deposito en ese mes y año pero sumando cantidades, 2+1-1 = 2)
Alguna ayuda?
Gracias
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

Consulta SUM

Publicado por Jose (4 intervenciones) el 29/07/2013 19:47:40
No acabo de leer bien la consulta que has puesto (Habría que ver si no es mejor utilizar join en lugar de tanto select).

El funcionamiento básico de sum es:

arti,depo,signo,sum(cantidad) from [tabla] where [condición] group by [campo/s]

En caso de varias tablas como parece ser tu caso
arti,depo,signo,sum(cantidad) from [tabla1] join [tabla2] on campo.tabla1=campo.tabla2 where [condición] group by [campo/s]

pero como ya te digo, los select anidados no son mi fuerte, así que a ver si alguien más puede arrojarte algo de luz.

Un saludo.
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

Consulta SUM

Publicado por leonardo_josue (877 intervenciones) el 29/07/2013 23:01:01
Hola Licha:

El hacer las subconsultas, tal como las estás planteando es una barbaridad... de entrada, las subconsultas tienen un pésimo rendimiento, además no veo el por qué tienes que utilizarlas, si tal como lo comenta José en su post, puedes hacerlo con JOIN's... por otro lado, veo algunos problemas en tu consulta... de entrada en la sección GROUP BY, no debes colocar el tipo de movimiento ni la cantidad, pues de lo contrario no te va a realizar las agrupaciones.

No nos colocas datos de ejemplo de tus tablas, pero podrías probar de la siguiente manera:

1
2
3
4
5
6
7
8
9
SELECT sd.arti, sd.depo, SUM(sm.signo * sd.cantidad) cantidad
FROM movimientostock sd
INNER JOIN tipomovimientos sm ON sm.id = sd.tipomovi
WHERE
   sd.arti = 51 AND
   sd.depo = 17 AND
   YEAR(sd.fecha) = 2013 AND
   MONTH(sd.fecha) = 1
GROUP BY sd.arti, sd.depo, YEAR(sd.fecha), MONTH(sd.fecha)



Si esto no te sirve, entonces postea algunos datos de ejemplo y con gusto te ayudamos a afinar la consulta.

Saludos
Leo.
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

Consulta SUM

Publicado por licha (2 intervenciones) el 30/07/2013 15:19:10
Ahora lo pruebo y cualquier cosa te escribo nuevamente
Gracias!
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