, je suppose que vous avez deux cas.
données de la colonne NEW_VALUE
est nulle: Utilisation COALESCE
UPDATE DWCUST DW
SET GENDER = (
SELECT coalesce(NEW_VALUE, 'U')
FROM GENDERSPELLING GS
WHERE DW.GENDER = GS.INVALID_VALUE
)
WHERE GENDER NOT IN (
'M'
,'F'
);
DEMO
CORRELATED sub-Query
renvoie pas de valeur: utilisation prolongée CASE
UPDATE DWCUST DW
SET GENDER = CASE
WHEN (
SELECT NEW_VALUE
FROM GENDERSPELLING GS
WHERE DW.GENDER = GS.INVALID_VALUE
) IS NULL
THEN 'U'
ELSE (
SELECT NEW_VALUE
FROM GENDERSPELLING GS
WHERE DW.GENDER = GS.INVALID_VALUE
)
END
WHERE GENDER NOT IN (
'M'
,'F'
);
OU COALESCE
extérieur:
UPDATE DWCUST DW
SET GENDER = coalesce((
SELECT NEW_VALUE
FROM GENDERSPELLING GS
WHERE DW.GENDER = GS.INVALID_VALUE
), 'U')
WHERE GENDER NOT IN (
'M'
,'F'
);
DEMO
Voulez-vous dire '' champ NEW_VALUE' est null' ou aucune ligne correspondante existe dans '' GENDERSPELLING? – zarruq
sélectionnez le décodage (nouvelle_valeur, null, 'U', nouvelle_valeur) ... – Frank
aucune ligne correspondante n'existe @zarruq –