Good morning,
I am trying to update records from a CTE, however I am getting error ORA-00928:
I think I'm not missing anything, however, I can not get the update to run.
I attach the code that I am making. I hope you can guide me about it.
WITH CP AS(
SELECT
MAX(CODIGO_POSTAL) CODIGO_POSTAL
,MAX(ID_ENTIDAD) ID_ENTIDAD
,MAX(ID_MUNICIPIO) ID_MUNICIPIO
,MAX(MUNICIPIO) MUNICIPIO
FROM CODIGO_POSTAL
GROUP BY CODIGO_POSTAL
ORDER BY 1
),DATOS AS(
SELECT
NVL(B.CMUN_ID,0) B_CMUN_ID
,NVL(B.ID_ENTIDAD,0) B_ID_ENTIDAD
,NVL(B.ID_MUNICIPIO,0) B_ID_MUNICIPIO
,NVL(B.MUNICIPIO,'ND') B_MUNICIPIO
,DM.id_domicilio
,DM.id_propietario
,DM.id_tipo_propietario
,DM.fecha_alta
,DM.id_localidad
,DM.codigo_postal
FROM DOMICILIO DM
LEFT JOIN MUNICIPIO B
ON B.ID_ENTIDAD = DM.ID_ENTIDAD
AND B.ID_MUNICIPIO = DM.ID_MUNICIPIO
WHERE DM.id_tipo_propietario = 2
AND NVL(B.ID_ENTIDAD,0) = 0
ORDER BY DM.ID_PROPIETARIO
)
MERGE
INTO DOMICILIO DM
USING (
SELECT
DOM.ROWID row_id,
CP.ID_ENTIDAD
FROM DOMICILIO DOM
INNER JOIN CP
ON CP.CODIGO_POSTAL = DOM.CODIGO_POSTAL
WHERE EXISTS (SELECT
DAT.id_propietario
FROM DATOS DAT
WHERE DAT.id_propietario = DOM.id_propietario
AND DAT.id_domicilio = DOM.id_domicilio
)
AND DOM.id_tipo_propietario = 2
) SRC ON (DM.ROWID = SRC.row_id )
WHEN MATCHED THEN UPDATE SET DM.ID_ENTIDAD = SRC.ID_ENTIDAD ;
Greetings.