Cuando ingreso registros en la tabla, está ingresando 0 registros. Aunque no hay errores.
CREATE TABLE new_details_staging (
e_id NUMBER(10),
e_name VARCHAR2(30),
portal_desc VARCHAR2(50),
CONSTRAINT pk_new_details_staging PRIMARY KEY ( e_id )
);
INSERT INTO new_details_staging VALUES (
11,
'A',
'AA'
);
INSERT INTO new_details_staging VALUES (
22,
'B',
'BB'
);
CREATE TABLE lookup_ref (
ref_id NUMBER(10),
ref_typ VARCHAR2(30),
ref_typ_desc NUMBER(20),
CONSTRAINT pk_lookup_ref PRIMARY KEY ( ref_id )
);
INSERT INTO lookup_ref VALUES (
181,
'portal',
'AA'
);
INSERT INTO lookup_ref VALUES (
182,
'portal',
'BB'
);
CREATE TABLE new_details_main (
e_id NUMBER(10),
e_name VARCHAR2(30),
portal NUMBER(20),
CONSTRAINT pk_new_details_main PRIMARY KEY ( e_id )
);
Cuando inserto registros en la tabla, se insertan 0 registros. ¿Alguien puede ayudarme a entender por qué no se están insertando filas en la tabla? Básicamente, quiero insertar el identificador de búsqueda desde la tabla de referencia de búsqueda en función de la columna portal de la tabla de estadificación.
Consulta de inserción:
insert
INTO new_details_main (
e_id,
e_name,
portal
)
SELECT
n.e_id,
n.e_name,
CASE
WHEN n.portal_desc = 'AA' THEN (select l.ref_id from lookup_ref where l.ref_typ='portal' and l.ref_typ_desc = 'AA')
WHEN n.portal_desc = 'BB' THEN (select l.ref_id from lookup_ref where l.ref_typ='portal' and l.ref_typ_desc = 'BB') END AS portal
FROM new_details_staging n CROSS JOIN lookup_ref l;
Resultado esperado:
davy.ai
Hay algunos problemas con el código SQL proporcionado que podrían hacer que no se inserten registros en la tabla
new_details_main
:lookup_ref
no tiene una columna llamadaref_typ_desc
de tipoNUMBER (20)
. En su lugar, tiene una columna llamadaref_typ_desc
de tipoVARCHAR2 (20)
. Esto significa que las consultas de inserción de la tablalookup_ref
necesitarían ser modificadas en consecuencia:new_details_staging
conlookup_ref
en las columnasportal_desc
yref_typ_desc
, respectivamente:SELECT
hacen referencia al alias de tablal
, pero no ha definido ese alias en la consulta. Para solucionar esto, debe agregar el aliasl
a la tablalookup_ref
en la cláusulaFROM
:Con estos cambios, la consulta de inserción completa debería verse así:
Esto debería insertar los registros esperados en la tabla
new_details_main
.