Bonjour,
Je suis débutante, soyez indulgents....
Oracle, via SQLdeveloper.
J'ai une table A qui contient notamment une colonne CPTE (inclus dans la primary key) ; j'ai une autre table B qui contient 2 colonnes (CPTE et CPTENEW).
Mon but est de faire une transco du CPTE en CPTENEW de la table A lorsque l'on trouve le CPTE dans la table B.
Jusque là, c'est bon, j'ai fait ce code là.
Mais je viens d'apprendre que je peux avoir plusieurs CPTE qui ne donnent qu'un seul CPTENEW ; et évidemment je tombe en clé en double lors de l'écriture dans la table A.
Je voudrais, dans ce cas (lors de la détection de clé primaire en double), cumuler les lignes de la table A, qui vont avoir le même CPTENEW (sommer les colonnes contenant des nombres, les autres colonnes étant identiques pour toutes les lignes ) et n'écrire qu'une seule ligne dans la table A.
Je pensais gérer cela avec la détection de la clé en double par l'EXCEPTION
Table A (CPTE fait partie de la Primary Key)
CPTE QTE1 QTE2 TOP
1 50 200 A
2 100 0 A
3 210 4 A
Table B (CPTE est la primary key)
CPTE CPTENEW
1 99
2 99
3 99
Je voudrais avoir à la fin
Table A
CPTE QTE1 QTE2 TOP
99 360 204 A
Voilà mon code pour la Transco de CPTE
UPDATE table a
SET a.cpte =
( SELECT b.cptenew FROM table b WHERE a.cpte = b.cpte)
WHERE a.cpte IN ( SELECT d.cpte FROM table d) ;
EXCEPTION
WHEN ???? THEN
????
WHEN OTHERS THEN
dbms_output.put_line( ` Erreur dans procédure '||sqlcode||' : '||sqlerrm);
GOTO SORTIE4 ;
Pouvez vous m'aider ?
Merci d'avance