Principales respuestas
Sumar valores de SQL

Pregunta
-
Hola tengo la siguiente situación... necesito un reporte de existencias, tengo la tabla movimientos con la siguiente info..
idMov codbarMov tipoMov cliente fechaMov 1 101 ENTRADA PT -null- 11/10/2017 2 101 ENTRADA PT -null- 11/10/2017 3 101 ENTRADA PT -null- 11/10/2017 4 101 ENTRADA PT -null- 11/10/2017 5 101 ENTRADA PT -null- 11/10/2017 6 101 ENTRADA PT -null- 11/10/2017 7 101 ENTRADA PT -null- 11/10/2017 8 101 ENTRADA PT -null- 11/10/2017 9 101 ENTRADA PT -null- 11/10/2017 10 101 ENTRADA PT -null- 11/10/2017 11 101 SALIDA VT -null- 11/10/2017 12 101 SALIDA VT -null- 11/10/2017 13 101 SALIDA VT -null- 11/10/2017 14 101 SALIDA VT -null- 11/10/2017 15 101 SALIDA VT -null- 11/10/2017 16 101 BAJA -null- 11/10/2017 17 101 SALIDA de PR -null- 11/10/2017 18 101 ENTRADA x REP -null- 11/10/2017 19 101 SALIDA VT -null- 11/10/2017 20 101 SALIDA VT -null- 11/10/2017 21 201 ENTRADA PT -null- 11/10/2017 22 201 ENTRADA PT -null- 11/10/2017 23 201 ENTRADA PT -null- 11/10/2017 24 201 ENTRADA PT -null- 11/10/2017 25 201 ENTRADA PT -null- 11/10/2017 26 201 ENTRADA PT -null- 11/10/2017 27 201 ENTRADA PT -null- 11/10/2017 28 201 ENTRADA PT -null- 11/10/2017 29 201 ENTRADA PT -null- 11/10/2017 30 201 ENTRADA PT -null- 11/10/2017 31 201 SALIDA VT Oswaldo 11/10/2017 32 201 SALIDA VT Oswaldo 11/10/2017 33 201 SALIDA VT Oswaldo 11/10/2017 34 201 SALIDA VT Oswaldo 11/10/2017 35 201 SALIDA VT Oswaldo 11/10/2017 y esta es la tabla Articulo...
codbar_articulo nombre_articulo modelo_articulo lote_articulo color_articulo tamaño_articulo 101 BURO CANCUN 123 Nogal KS 201 TOCADO CANCUN 200 NOGAL KS como pueden ver en la tabla solo guardo el codigo del articulo y registro todos los movimientos que este tiene, ahora necesito una consulta que basicamente me diga las existencias, lo mas cerca que e estado es esto:
select (((SELECT count(movimientos.tipoMov) from movimientos where movimientos.tipoMov="ENTRADA PT") + (SELECT count(movimientos.tipoMov) from movimientos where movimientos.tipoMov="ENTRADA x REP"))- ((SELECT count(movimientos.tipoMov) from movimientos where movimientos.tipoMov="SALIDA VT") + (SELECT count(movimientos.tipoMov) from movimientos where movimientos.tipoMov="SALIDA de PR") + (SELECT count(movimientos.tipoMov) from movimientos where movimientos.tipoMov="BAJA"))) as Saldo, articulo.nombre_articulo as Articulo, articulo.modelo_articulo as Modelo, articulo.tamaño_articulo as Tamaño, articulo.color_articulo as Color, articulo.lote_articulo as Lote from articulo inner join movimientos on articulo.codbar_articulo=movimientos.codbarMov group by articulo.lote_articulo
pero me arroga la siguiente tabla:
Saldo Articulo Modelo Tamaño Color Lote 7 BURO CANCUN KS Nogal 123 7 TOCADO CANCUN KS NOGAL 200 entonces como puedo rehacer la consulta para que me muestre lo que me debe de mostrar... que los resultados deberian de ser estos:
Saldo Articulo Modelo Tamaño Color Lote 2 BURO CANCUN KS Nogal 123 5 TOCADO CANCUN KS NOGAL 200 Algun alma caritatva que me ayude... lo agradeceria eternamente... despues de terminar con esto prometo aprender ENTITY FRAMEWORK con LINQ para resolverme la vida un poco mas simple!!! jajajaja
Respuestas
-
SELECT a.nombre_articulo AS Articulo, a.modelo_articulo AS Modelo, a.tamaño_articulo AS Tamaño, a.color_articulo AS Color, a.lote_articulo AS Lote, SUM(CASE WHEN m.tipoMov IN ('ENTRADA PT', 'ENTRADA x REP') THEN 1 ELSE -1 END) AS Saldo FROM articulo a INNER JOIN movimientos m ON a.codbar_articulo = m.codbarMov GROUP BY a.nombre_articulo, a.modelo_articulo, a.tamaño_articulo, a.color_articulo, a.lote_articulo; GO
Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.- Marcado como respuesta Sully Ruiz jueves, 12 de octubre de 2017 19:08
-
...sólo una duda, si quiero de un articulo en especifico, ¿sólo debo agregar un WHERE a.nombre_Articulo"CABECERA KS" AND a.modelo_articulo="CANCUN" por ejemplo...?
Si, tal cual lo has descrito.
- Marcado como respuesta Sully Ruiz jueves, 12 de octubre de 2017 21:01
Todas las respuestas
-
SELECT a.nombre_articulo AS Articulo, a.modelo_articulo AS Modelo, a.tamaño_articulo AS Tamaño, a.color_articulo AS Color, a.lote_articulo AS Lote, SUM(CASE WHEN m.tipoMov IN ('ENTRADA PT', 'ENTRADA x REP') THEN 1 ELSE -1 END) AS Saldo FROM articulo a INNER JOIN movimientos m ON a.codbar_articulo = m.codbarMov GROUP BY a.nombre_articulo, a.modelo_articulo, a.tamaño_articulo, a.color_articulo, a.lote_articulo; GO
Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.- Marcado como respuesta Sully Ruiz jueves, 12 de octubre de 2017 19:08
-
-
...sólo una duda, si quiero de un articulo en especifico, ¿sólo debo agregar un WHERE a.nombre_Articulo"CABECERA KS" AND a.modelo_articulo="CANCUN" por ejemplo...?
Si, tal cual lo has descrito.
- Marcado como respuesta Sully Ruiz jueves, 12 de octubre de 2017 21:01