You are on page 1of 8

BASE DE DATOS OPERATIVA

CREATE DATABASE OPERATIVA;


USE OPERATIVA

/*TABLA DE OPERATIVA CLIENTES */


CREATE TABLE OP_CLIENTES (
CLI_ID INT NOT NULL PRIMARY KEY,
CLI_NOMBRE VARCHAR (100) NOT NULL,
CLI_FECHA_NAC VARCHAR (20) NOT NULL, --aaaa/dd/mm--
CLI_FECHA_ALTA VARCHAR (20) NOT NULL --dd/mm/aaaa--
);

/*SE INSERTAN LOS DATOS EN LA TABLA*/


INSERT INTO OP_CLIENTES VALUES('1','MELANIE REYNOSO MEZA','2001-21-09','23-12-2001');
INSERT INTO OP_CLIENTES VALUES('2','MIGUEL MEDINA RIVERA','2000-14-02','22-08-2000');
INSERT INTO OP_CLIENTES VALUES('3','ADELINA RIOS MARTELL','2001-18-03','19-05-2002');
INSERT INTO OP_CLIENTES VALUES ('4','YAZARETH CERVANTEZ VALLE','2000-27-05','24-08-2000');
INSERT INTO OP_CLIENTES VALUES ('5','IMELDA BAEZ HERNANDEZ','1985-19-04','15-05-1985');
INSERT INTO OP_CLIENTES VALUES ('6','EDUARDO ROBLES AVIÑA','1980-30-01','22-02-1981');
INSERT INTO OP_CLIENTES VALUES ('7','MELISSA FLORES ACUÑA','2005-23-08','25-10-2005');

SELECT * FROM OP_CLIENTES


BASE DE DATOS ALMACÉN

CREATE DATABASE ALMACEN;


USE ALMACEN

/*TABLA DE DIMENSION CLIENTES */


CREATE TABLE DW_CLIENTES (
CLI_ID INT NOT NULL PRIMARY KEY,
CLI_NOMBRE VARCHAR (100) NOT NULL,
CLI_AP_PATERNO VARCHAR (100) NOT NULL,
CLI_AP_MATERNO VARCHAR (100) NOT NULL,
CLI_FECHA_NAC DATE NOT NULL,
CLI_FECHA_ALTA DATE NOT NULL
);

SELECT * FROM DW_CLIENTES


CREACIÓN DEL CURSOR CON TRANSFORMACIÓN
--CURSOR--

USE OPERATIVA

--DECLARAR VARIABLES--
DECLARE @Cadena NVARCHAR (100)
DECLARE @ID INT
DECLARE @Nombre NVARCHAR (100)
DECLARE @Ap_paterno NVARCHAR (100)
DECLARE @Ap_materno NVARCHAR (100)
DECLARE @Fecha_nac NVARCHAR (100)
DECLARE @Fecha_alta NVARCHAR (100)
DECLARE @Dia NVARCHAR (100)
DECLARE @Mes NVARCHAR (100)
DECLARE @Año NVARCHAR (100)
DECLARE @Apt INT
DECLARE @Largo INT;

--DECLARAMOS EL CURSOR--
DECLARE CURSORdos CURSOR SCROLL
FOR SELECT * FROM OP_CLIENTES

OPEN CURSORdos
FETCH NEXT FROM Cursordos INTO
@ID, @Nombre, @Fecha_nac, @Fecha_alta
WHILE (@@FETCH_STATUS = 0)
BEGIN
--SEPARAR NOMBRE Y APELLIDOS--
SET @Cadena = RTRIM(LTRIM(@Nombre));
SET @Apt = CHARINDEX(' ', @Cadena,1);
SET @Largo = @Apt-1;
SET @Nombre = SUBSTRING(@Cadena, 1, @Largo);

--SE GUARDA EL NOMBRE EN @NOMBRE Y LOS APELLIDOS EN @CADENA--


SET @Largo = LEN(@Cadena) -@Apt;
SET @Apt = @Apt+1;
SET @Cadena = SUBSTRING(@Cadena, @Apt, @Largo);

--EXTRAER EL AP_PATERNO DE LA CADENA--


SET @Cadena = RTRIM(LTRIM(@Cadena));
SET @Apt = CHARINDEX(' ', @Cadena, 1);
SET @Largo = @Apt -1;
SET @Ap_paterno = SUBSTRING(@Cadena, 1, @Largo);

--AP_PATERNO SE GUARDA EN @Ap_paterno--


SET @Largo = LEN(@Cadena) -@Apt;
SET @Apt = @Apt + 1;
SET @Cadena = SUBSTRING(@Cadena, @Apt, @Largo);

--GUARDAR AP_MATERNO EN @Ap_materno--


SET @Ap_materno = @Cadena;

--CONVERSIÓN DE FECHA A AAAA/DD/MM--


SET @Cadena = RTRIM(LTRIM(@Fecha_nac));
SET @Apt = CHARINDEX(' ', @Cadena, 1);
SET @Largo = @Apt + 4;
SET @Año = SUBSTRING(@Cadena, 1, @Largo);

--AÑO SE GUARDA EN @Año--


SET @Largo = LEN(@Cadena) -@Apt;
SET @Apt = @Apt + 6;
SET @Cadena = SUBSTRING(@Cadena, @Apt, @Largo);

--SEPARAR DIA--
SET @Cadena = RTRIM(LTRIM(@Cadena));
SET @Apt = CHARINDEX(' ', @Cadena, 1);
SET @Largo = @Apt + 2;
SET @Dia = SUBSTRING(@Cadena, 1, @Largo);

--MES QUEDA EN @Cadena--


SET @Largo = LEN(@Cadena) -@Apt;
SET @Apt = @Apt + 4;
SET @Cadena = SUBSTRING(@Cadena, @Apt, @Largo);

--GUARDAR MES EN @Mes--


SET @Mes = @Cadena

--ORDENAR FECHA AL ESTILO 103 EN @Fecha_nac--


SET @Fecha_nac = @Dia + '/' + @Mes + '/' + @Año;

--CONVERTIR EL STRING A DATE--


SET @Fecha_nac = CONVERT(DATE, @Fecha_nac, 103); --aaaa/dd/mm ----> dd/mm/aaaa--
SET @Fecha_alta = CONVERT(DATE, @Fecha_alta, 103); --dd/mm/aaaa--

INSERT INTO ALMACEN.dbo.DW_CLIENTES VALUES (@ID, @Nombre, @Ap_paterno, @Ap_materno,


@Fecha_nac, @Fecha_alta)
FETCH NEXT FROM Cursordos INTO @ID, @Nombre, @Fecha_nac, @Fecha_alta
END

CLOSE CURSORdos
DEALLOCATE CURSORdos

USE ALMACEN
SELECT * FROM DW_CLIENTES

You might also like