Oracle: Reemplazar valores nulos en columnas de pivote con unir de otra tabla.
Tienes una salida de tabla dinámica y ahora quieres revisar los valores de las columnas de la tabla dinámica y reemplazar los valores nulos con otra columna de otra tabla.
No. de Factura | Columna | Valor |
---|---|---|
111 | A | Uno |
111 | B | Dos |
111 | C | Tres |
111 | E | Cinco |
(SELECCIONAR No._de_factura, nuevo_valor, Nombre_de_Columna DE nombre_de_tabla)
PIVOT (max(nuevo_valor)
PARA Nombre_de_Columna IN (‘A’, ‘B’, ‘C’, ‘D’, ‘E’))
Esto devolvió la siguiente tabla:
No. de Factura | ‘A’ | ‘B’ | ‘C’ | ‘D’ | ‘E’ |
---|---|---|---|---|---|
111 | Uno | Dos | Tres | null | Cinco |
Ahora, quiero reemplazar el valor nulo de la columna D con un valor de otra tabla que coincida con el número de factura.
with temp as
(SELECCIONAR No._de_factura, nuevo_valor, Nombre_de_Columna DE nombre_de_tabla)
PIVOT (max(nuevo_valor)
PARA Nombre_de_Columna IN (‘A’, ‘B’, ‘C’, ‘D’, ‘E’))
SELECT nvl(temp.D, backup.D)
FROM
(SELECCIONAR A, B, C, D, E De Backup_table) bckup
UNION SELCCIÓN
temp
EN
temp.No._de_factura = bckup.No._de_factura
Ahora estoy recibiendo el error diciendo que la columna D no existe.
davy.ai
Necesitas especificar el nombre de la columna en la sentencia
select
de la tablatemp
. La tablatemp
no tiene una columnaD
, por lo que necesitas especificar el nombre de la columna de la tablabckup
.debe cambiarse a