Bonjour,
J'essaye de merger une table dans une autre selon une condition donnée, mais ça marche pas, je ne sais pas ou est ce qu'il y a une erreur, si quelqu'un peut m'aider ça sera très sympa de sa part.
D'abord, la structure de mes deux tables est :
Puis, la requête que j'ai écrit est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CD_PAYS VARCHAR2(10),ID_APPLI VARCHAR2(30), ID_FINANC VARCHAR2(30),ID_CLT VARCHAR2(30), CD_STATUT VARCHAR2(10),DER_NUM_CTL VARCHAR2(10), ID_DER_DEMAND VARCHAR2(30),NOTE_CLIENT NUMBER(10,3), POURCENT_PERTE NUMBER(10,3)
Mon problème est que les lignes de la table W_CLIENT sont ajoutées dans la table CLIENT directement, c'est à dire que la reqête va dans le NOT MATCHED et insert toutes les lignes de W_CLIENT dans CLIENT alors que j'ai une ligne qui doit être mise à jour car elle satisfait la condition.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 MERGE INTO CLIENT T1 USING (SELECT * FROM W_CLIENT) T2 ON ( T1.CD_PAYS = T2.CD_PAYS AND T1.ID_FINANC = T2.ID_FINANC AND T1.ID_CLT = T2.ID_CLT ) WHEN MATCHED THEN UPDATE SET T1.POURCENT_PERTE = T2.POURCENT_PERTE; WHEN NOT MATCHED THEN INSERT (T1.CD_PAYS,T1.ID_APPLI,T1.ID_FINANC,T1.ID_CLT,T1.CD_STATUT,T1.DER_NUM_CTL,T1.ID_DER_DEMAND,T1.NOTE_CLIENT,T1.POURCENT_PERTE) VALUES ( T2.CD_PAYS,T2.ID_APPLI,T2.ID_FINANC,T2.ID_CLT,T2.CD_STATUT,T2.DER_NUM_CTL,T2.ID_DER_DEMAND,T2.NOTE_CLIENT,T2.POURCENT_PERTE);
Partager