Caso en SQL Server BD Practica1 usando consultas basicas
En esta ocasión aprenderemos a crear consultas basicas usando el gestor de Base de Datos Microsoft SQL Server mediante el caso creando la BD Practica1
Problema 1: Crear la base de datos PRACTICA1 con la tabla productos, ingresar datos y luego mostrar en una vista el código, nombre, stock y el stock acumulado (la suma de los stocks previos al registro).
CREATE DATABASE PRACTICA1 GO USE PRACTICA1 GO CREATE TABLE PRODUCTOS ( IDPRO VARCHAR(6) PRIMARY KEY, NOMBREPRO VARCHAR(50), PRECIOPRO DECIMAL(8,2), STOCKPRO INTEGER ); GO INSERT INTO PRODUCTOS VALUES ('PRO001','Alcohol en Gel 360ml',10.00,50); INSERT INTO PRODUCTOS VALUES ('PRO002','Galon de Lejía 7.5% Hipoclorito de sodio',20,50); INSERT INTO PRODUCTOS VALUES ('PRO003','Paños Absorbentes Virutex x20',15.00,50); INSERT INTO PRODUCTOS VALUES ('PRO004','Par de Guantes Multiusos de nitrilo Virutex',5.00,50); INSERT INTO PRODUCTOS VALUES ('PRO005','Galon Limpia Vidrios marca Daryza',16.00,50);
CREATE VIEW V_STOCKACUMULADO AS SELECT p.IDPRO ,p.NOMBREPRO, p.STOCKPRO , SUM(SUM(p.STOCKPRO)) OVER (ORDER BY p.IDPRO ASC) AS Acumulado FROM PRODUCTOS p GROUP BY p.IDPRO , p.NOMBREPRO,p.STOCKPRO; SELECT *from V_STOCKACUMULADO
Problema 2: Crear una vista acumulando los costos de los productos.
CREATE VIEW V_ACUMULADOCOSTO AS SELECT p.IDPRO ,p.NOMBREPRO, p.PRECIOPRO , SUM(SUM(p.PRECIOPRO)) OVER (ORDER BY p.IDPRO ASC) AS Acumulado FROM PRODUCTOS p GROUP BY p.IDPRO , p.NOMBREPRO,p.PRECIOPRO
Problema 3: crear la tabla CARDEX y luego crear una vista con la suma de todas las entradas de cada PRODUCTO, la vista deberá de contener el código del producto, el nombre del producto, el tipo de registro, el stock y el total de la cantidad de entradas.
CREATE TABLE CARDEX ( NROREG VARCHAR(10), IDPRO VARCHAR(6), tipoREGISTRO VARCHAR(30), motivoREGISTRO VARCHAR(30), CANTIDAD INTEGER ) INSERT INTO CARDEX VALUES ('5JUNIO01','PRO001','SALIDA','POR VENTA',10); INSERT INTO CARDEX VALUES ('5JUNIO02','PRO002','SALIDA','POR VENTA',20); INSERT INTO CARDEX VALUES ('5JUNIO03','PRO003','SALIDA','POR VENTA',30); INSERT INTO CARDEX VALUES ('5JUNIO04','PRO004','SALIDA','POR VENTA',40); INSERT INTO CARDEX VALUES ('5JUNIO05','PRO001','ENTRADA','POR COMPRA',40); INSERT INTO CARDEX VALUES ('5JUNIO06','PRO002','ENTRADA','POR COMPRA',40); INSERT INTO CARDEX VALUES ('5JUNIO07','PRO003','ENTRADA','POR COMPRA',40); INSERT INTO CARDEX VALUES ('5JUNIO08','PRO004','ENTRADA','POR COMPRA',40); INSERT INTO CARDEX VALUES ('6JUNIO09','PRO001','SALIDA','POR VENTA',20); INSERT INTO CARDEX VALUES ('7JUNIO10','PRO003','ENTRADA','POR COMPRA',20);
CREATE VIEW V_SUMAENTRADAS AS SELECT * from ( SELECT p.IDPRO ,p.NOMBREPRO, c.tipoREGISTRO, p.STOCKPRO , ISNULL(( SELECT SUM(c.CANTIDAD) FROM CARDEX c WHERE p.IDPRO = c.IDPRO and c.tipoREGISTRO='ENTRADA' ),0) as entradas from CARDEX c,PRODUCTOS p group by p.IDPRO,p.NOMBREPRO,p.STOCKPRO,c.tipoREGISTRO)T where (T.entradas=0 or T.entradas<>0) and t.tipoREGISTRO='ENTRADA';
Problema 4: Crear una vista de todas las salidas de cada PRODUCTO, la vista deberá de contener el código del producto, el nombre del producto, el tipo de registro, el stock y el total de la cantidad de salidas.
CREATE VIEW V_SUMASALIDAS AS SELECT * from ( SELECT p.IDPRO ,p.NOMBREPRO, c.tipoREGISTRO, p.STOCKPRO , ISNULL(( SELECT SUM(c.CANTIDAD) FROM CARDEX c WHERE p.IDPRO = c.IDPRO and c.tipoREGISTRO='SALIDA' ),0) as salidas from CARDEX c,PRODUCTOS p group by p.IDPRO,p.NOMBREPRO,p.STOCKPRO,c.tipoREGISTRO)T where (T.salidas=0 or T.salidas<>0) and t.tipoREGISTRO='SALIDA';
Problema 5: Crear una vista de las existencias, la vista deberá de tener el código del producto, el nombre del producto, y la existencia (stock +suma de entradas – suma de salidas ) de cada producto.
CREATE VIEW V_EXISTENCIA AS SELECT p.IDPRO ,p.NOMBREPRO , p.STOCKPRO+ ISNULL(( SELECT SUM(c.CANTIDAD) FROM CARDEX c WHERE p.IDPRO = c.IDPRO and c.tipoREGISTRO='ENTRADA' ),0) - ISNULL(( SELECT SUM(c.CANTIDAD) FROM CARDEX c WHERE p.IDPRO = c.IDPRO and c.tipoREGISTRO='SALIDA' ),0) as existencia from CARDEX,PRODUCTOS p group by p.IDPRO,p.NOMBREPRO,p.STOCKPRO;
Problema 6: Crear una vista que muestre las entradas y las salidas solo de los productos ‘PRO001’ y ‘PRO003’.
CREATE VIEW V_EXISTENCIA_SOLO_PRODUCTO AS SELECT p.IDPRO ,p.NOMBREPRO , ISNULL(( SELECT SUM(c.CANTIDAD) FROM CARDEX c WHERE p.IDPRO = c.IDPRO and c.tipoREGISTRO='ENTRADA' ),0) as entradas,ISNULL(( SELECT SUM(c.CANTIDAD) FROM CARDEX c WHERE p.IDPRO = c.IDPRO and c.tipoREGISTRO='SALIDA' ),0) as salidas from CARDEX,PRODUCTOS p where p.IDPRO='PRO001' or p.IDPRO='PRO003' group by p.IDPRO,p.NOMBREPRO,p.STOCKPRO;
Problema 7: Crear una vista con todos los productos que no registran entradas en el CARDEX
CREATE VIEW V_EXISTENCIA_SIN_ENTRADA AS SELECT * from ( SELECT p.IDPRO ,p.NOMBREPRO , ISNULL(( SELECT SUM(c.CANTIDAD) FROM CARDEX c WHERE p.IDPRO = c.IDPRO and c.tipoREGISTRO='ENTRADA' ),0) as entradas from CARDEX,PRODUCTOS p group by p.IDPRO,p.NOMBREPRO,p.STOCKPRO)T where T.entradas=0;
Problema 8: Crear una vista de PRODUCTOS ordenada por precio de mayor a menor, agregarle un campo NroORDEN para la numeración.
CREATE VIEW V_ORDENAR_DESC_PRECIO_PRODUCTO AS SELECT ROW_NUMBER() OVER( ORDER BY PRECIOPRO DESC) AS NroORDEN, IDPRO,NOMBREPRO,PRECIOPRO from PRODUCTOS;
Problema 9: Crear una vista de PRODUCTOS ordenada por su nombre en orden alfabético, agregarle un campo NroORDEN para la numeración.
CREATE VIEW V_ORDENAR_ASC_NOMBRE_PRODUCTO AS SELECT ROW_NUMBER() OVER( ORDER BY NOMBREPRO ASC) AS NroORDEN, IDPRO,NOMBREPRO,PRECIOPRO from PRODUCTOS;
Publicar un comentario
0 Comentarios