Está en la página 1de 2

**** MIGRACION DE DATOS ****

-- INSERT ALL INCONDICIONAL

INSERT ALL
INTO empleados_para_gerencia VALUES (CED,NOM,SAL)
INTO empleados_para_produccion VALUES (CED,NOM,ED)
SELECT cedula CED, nombre NOM, edad ED, sueldo SAL
FROM empleados;

-- INSERT ALL CONDICIONAL

INSERT ALL
WHEN SX='M' THEN
INTO empleados_hombres VALUES (CED,NOM,ED)
WHEN SX='F' THEN
INTO empleados_mujeres VALUES (CED,NOM,SAL)
SELECT cedula CED, nombre NOM, edad ED, sueldo SAL, sexo SX
FROM empleados;

-- INSERT FIRST CONDICIONAL


El uso de INSERT FIRST hace que la inserción de tablas múltiples funcione como una
expresión CASE,
por lo que las condiciones se prueban hasta que se encuentra la primera
coincidencia
y no se prueban más condiciones.

INSERT FIRST
WHEN SAL < 3000000 THEN
INTO sueldos_bajos VALUES (CED,NOM,SAL)
WHEN SAL BETWEEN 3000000 AND 5000000 THEN
INTO sueldos_medios VALUES (CED,NOM,SAL)
ELSE
INTO sueldos_altos VALUES (CED,NOM,SAL)
SELECT cedula CED, nombre NOM, sueldo SAL
FROM empleados;

-- INSERT DE PIVOTE

INSERT DE PIVOTE
INSERT ALL
INTO ventas_normalizada VALUES (cedulaven,semana,ventas_lunes)
INTO ventas_normalizada VALUES (cedulaven,semana,ventas_martes)
INTO ventas_normalizada VALUES (cedulaven,semana,ventas_miercoles)
INTO ventas_normalizada VALUES (cedulaven,semana,ventas_jueves)
INTO ventas_normalizada VALUES (cedulaven,semana,ventas_viernes)
SELECT cedulaven, semana, ventas_lunes, ventas_martes,
ventas_miercoles, ventas_jueves, ventas_viernes
FROM ventas_x_semana;

-- TABLA NORMALIZADA

CREATE TABLE ventas_normalizada


(cedula_vendedor NUMBER NOT NULL,
semana NUMBER NOT NULL,
ventas NUMBER not null);
-- MERGE

*UPDATE, DELETE*

MERGE INTO copia_empleados c


USING (SELECT * FROM empleados)
e ON (c.cedula = e.cedula)
WHEN MATCHED THEN
UPDATE SET
c.nombre = e.nombre,
c.edad = e.edad,
c.sueldo = e.sueldo
DELETE WHERE (e.sueldo > 8800000)
WHEN NOT MATCHED THEN
INSERT VALUES (e.cedula, e.nombre, e.edad, e.sueldo);

También podría gustarte