SQL - ayuda con consulta de sql como agrupar

 
Vista:
sin imagen de perfil

ayuda con consulta de sql como agrupar

Publicado por karla (4 intervenciones) el 27/02/2012 21:55:48
espero me puedan ayudar necesito hacer una consulta en donde me arroje el valor de las existencias de todos los productos en solo dos almacenes, puesto que manejo varios, me debe de salir el nombre del articulo y el nombre del almacen y las existencias de cada uno mi consulta esta asi:

SELECT (SELECT ARTICULOS.NOMBRE FROM ARTICULOS WHERE ARTICULOS.ARTICULO_ID=SALDOS_IN.ARTICULO_ID),
SUM(saldos_in.ENTRADAS_UNIDADES)-SUM(saldos_in.SALIDAS_UNIDADES) as existencias

FROM SALDOS_IN inner join ARTICULOS ON SALDOS_IN.ARTICULO_ID=ARTICULOS.ARTICULO_ID

WHERE SALDOS_IN.ALMACEN_ID IN (111364, 174243)
GROUP BY SALDOS_IN.ARTICULO_ID

el resultado de mi consulta me dael nombre del articulo y las existencias pero sumandome las existencias de los dos almacenes, me podiran ayudar como hacerle para q me salgan las existencias de cada almacen y el nombre 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
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta de sql como agrupar

Publicado por xve (284 intervenciones) el 27/02/2012 22:38:55
Hola Karla, me cuesta un poco seguir los campos, y que los desconozco, pero no veo muy bien donde esta el campo que hace referencia a los almacenes...
tienes que agrupar también por los almacenes... creo que esto podría ser... te lo pongo en negrita, pero tendrías que cambiarlo por el nombre del campo...

SELECT (SELECT ARTICULOS.NOMBRE FROM ARTICULOS WHERE ARTICULOS.ARTICULO_ID=SALDOS_IN.ARTICULO_ID),
SUM(saldos_in.ENTRADAS_UNIDADES)-SUM(saldos_in.SALIDAS_UNIDADES) as existencias

FROM SALDOS_IN inner join ARTICULOS ON SALDOS_IN.ARTICULO_ID=ARTICULOS.ARTICULO_ID

WHERE SALDOS_IN.ALMACEN_ID IN (111364, 174243)
GROUP BY almacenes,SALDOS_IN.ARTICULO_ID
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

ayuda con consulta de sql como agrupar

Publicado por Karla (4 intervenciones) el 28/02/2012 21:40:50
muchas gracias, me fue de mucha ayuda, por fin pude sacar la consulta!!
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
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ayuda con consulta de sql como agrupar

Publicado por leonardo_josue (1173 intervenciones) el 27/02/2012 22:42:49
Hola Karla:
No estoy seguro de si entendí bien qué es lo que necesitas, pero checa esto:

No mencionas cuál es la estructura de tus tablas, ni tampoco nos dices cómo está organizada tu información, por lo tanto es imposible darte una respuesta puntual, pero de cualquier forma toma en cuenta estos puntos.

Para hacer la distinción por almacén podrías hacer algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
mysql> SELECT * FROM tabla;
+------+------------+---------+----------+
| id   | articulo   | almacen | cantidad |
+------+------------+---------+----------+
|    1 | articulo 1 |  111364 |       10 |
|    2 | articulo 2 |  174243 |       30 |
|    3 | articulo 2 |  111364 |       20 |
|    4 | articulo 1 |  174243 |       30 |
|    5 | articulo 1 |  111364 |       40 |
|    6 | articulo 2 |  174243 |       10 |
|    7 | articulo 3 |  111364 |       30 |
|    8 | articulo 3 |  174243 |       50 |
|    9 | articulo 1 |  174243 |       10 |
|   10 | articulo 1 |  999999 |      999 |
+------+------------+---------+----------+
10 rows in set (0.06 sec)
 
mysql> SELECT articulo,
    -> SUM(CASE WHEN almacen = 111364
    -> THEN cantidad ELSE 0 END) total_almacen_111364,
    -> SUM(CASE WHEN almacen = 174243
    -> THEN cantidad ELSE 0 END) total_almacen_174243,
    -> SUM(cantidad) total
    -> FROM tabla
    -> WHERE almacen IN (111364, 174243)
    -> GROUP BY articulo;
+------------+----------------------+----------------------+-------+
| articulo   | total_almacen_111364 | total_almacen_174243 | total |
+------------+----------------------+----------------------+-------+
| articulo 1 |                   50 |                   40 |    90 |
| articulo 2 |                   20 |                   40 |    60 |
| articulo 3 |                   30 |                   50 |    80 |
+------------+----------------------+----------------------+-------+
3 rows in set (0.00 sec)


en el ejemplo no esto calculando la existencia (es decir no estoy haciendo la resta) pero tú simplemente tendrías que ponerla en lugar del campo cantidad:

1
....... THEN entradas_unidades - salidas_unidades ELSE ..........


Segundo, NO HAY NECESIDAD DE HACER UNA SUBCONSULTA PARA OBTENER EL NOMBRE DEL ARTÍCULO, ya que la tabla ya está considerada en el INNER JOIN, simplemente en el select debes poner algo como esto:

1
SELECT ARTICULOS.NOMBRE, SUM(...........


Haz el intento por obtener la consulta, si continuas con problemas publica cuál es la estructura de tus tablas y de ser posible por también algunos datos de ejemplo. Mientras más detalles coloques en el post más fácil será tratar de ayudarte. El ejemplo está hecho en MySQL, pero debería funcionar para cualquier DBMS, pero si te trae problemas la sintaxis menciona también la BD que estás utilizando.

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

ayuda con consulta de sql como agrupar

Publicado por Sandro (1 intervención) el 10/11/2014 21:29:51
Excelente la Colaboracionnnn..

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