Bases de Datos - Sistema de Inventario

   
Vista:

Sistema de Inventario

Publicado por Oscar Danilo (7 intervenciones) el 04/11/2015 00:09:45
Hola Muy buenas tardes estimados, estoy realizando un sistema de inventario, tengo la siguiente estructura de mis tablas relacionadas respectivamente:


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
Create Table MEDIDAS(
 Id_Medida
 Descripcion
 Usuario_Creacion
)
 
Create Table MATERIALES(
Id_Material
Nombre
Medida
Usuario_Creacion )
 
 
Create Table BODEGA(
Id_Bodega
Nombre_Bodega
Usuario_Creacion )
 
Create Table DETBODEGA(
Id
Id_Bodega
Id_Material
No_Documento
Medida
Cantidad
Fecha
Observaciones
Transaccion(Entradas o Salidas)
Usuario_Creacion )

tengo consultas para hacer referencia a la suma de cada caso o transacción:

En el Caso de Entradas:

1
2
3
4
5
6
7
SELECT BG.Nombre_Bodega AS Bodega , M.Nombre AS Producto, SUM(DTBG.CANTIDAD) as Entradas
FROM DETBODEGA DTBG
INNER JOIN BODEGA BG ON BG.Id_Bodega=DTBG.Id_Bodega
INNER JOIN MATERIALES M ON M.Id_Material=DTBG.Id_Material
INNER JOIN MEDIDAS ME ON ME.Id_Medida=DTBG.Medida
WHERE DTBG.Transaccion='E'
GROUP BY BG.Nombre_Bodega, M.Nombre

En el Caso de Salidas:

1
2
3
4
5
6
7
SELECT BG.Nombre_Bodega AS Bodega , M.Nombre AS Producto, SUM(DTBG.CANTIDAD) as Entradas
FROM DETBODEGA DTBG
INNER JOIN BODEGA BG ON BG.Id_Bodega=DTBG.Id_Bodega
INNER JOIN MATERIALES M ON M.Id_Material=DTBG.Id_Material
INNER JOIN MEDIDAS ME ON ME.Id_Medida=DTBG.Medida
WHERE DTBG.Transaccion='S'
GROUP BY BG.Nombre_Bodega, M.Nombre

Mi pregunta es, como realizar un consulta que me muestre los datos obtenidos de la tabla DETBODEGA de la siguiente manera:

Bodega| Producto| Entradas| Salidas| Saldo|

De antemano, Saludos y muchas gracias por el apoyo
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

Sistema de Inventario

Publicado por Rafael (33 intervenciones) el 04/11/2015 09:04:43
Con un CASE ...
Claro depende de tu Motor de Base de Datos pero podria ser algo asi...
1
2
3
4
5
6
7
8
9
10
11
12
SELECT BG.Nombre_Bodega AS Bodega
     , M.Nombre AS Producto
     , SUM(CASE WHEN DTBG.Transaccion='E' THEN DTBG.CANTIDAD ELSE 0 END) as Entradas
     , SUM(CASE WHEN DTBG.Transaccion='S' THEN DTBG.CANTIDAD ELSE 0 END) as Salidas
     , SUM(CASE WHEN DTBG.Transaccion='E' THEN DTBG.CANTIDAD
                WHEN DTBG.Transaccion='S' THEN DTBG.CANTIDAD * -1
                ELSE 0 END) as Saldo
FROM DETBODEGA DTBG
INNER JOIN BODEGA BG ON BG.Id_Bodega=DTBG.Id_Bodega
INNER JOIN MATERIALES M ON M.Id_Material=DTBG.Id_Material
INNER JOIN MEDIDAS ME ON ME.Id_Medida=DTBG.Medida
GROUP BY BG.Nombre_Bodega, M.Nombre

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