Caso en SQL Server BD Practica1 usando consultas basicas

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 
bdpractica1 vista stock acumulado

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 
bdpractica1 vista precio acumulado

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'; 
bdpractica1 union tablas cardex

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'; 
bdpractica1 vista salida producto

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; 
bdpractica1 vista existencia

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; 
bdpractica1 vista entrada salida producto

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; 
bdpractica1 vista producto nocardex

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; 
bdpractica1 vista numeracion producto

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; 
bdpractica1 vista orden alfabetico producto

Publicar un comentario

Guardar mi nombre, correo electrónico y sitio web en este navegador la próxima vez que comente

0 Comentarios