Bonjour,
j'ai un petit problème pour mettre à jour une table de ma base de données.
Actuellement, la structure de ma table est la suivante :
create table T1 (COL1 char(10) not null, COL2 date not null, ...);
La clé de ma table est composée de COL1 et de COL2.
Pour les besoins d'une mise à jour fonctionnelle, ma table T1 aura désormais la structure suivante :
create table T1 (COL1 char(10) not null, COL2 number(6,0) not null, ...);
c'est à dire que la zone de date est supprimée au profit d'une zone numérique qui est en fait un compteur s'incrémentant de 1 en 1, en groupant les enregistrements par COL1.
create table T2 as select * from T1;
alter table T1 drop column COL2;
alter table T1 add COL2 number(6,0);
Mon problème est que la requête que je voulais exécuter pour mettre à jour cette table ne fonctionne pas correctement :
update T1 set COL2=(select max(COL2)+1 from T1 a where a.COL1=T1.COL1);
car les enregistrements ayant la même valeur de COL1 ont également la même valeur pour COL2 (il ne recalcule pas à chaque lecture/mise à jour).
Il faudrait, je suppose, une sorte de requête magique du style :
update T1 set COL2=rownum group by COL1;
Auriez-vous une solution pour m'aider, SVP ?
Merci d'avance.
Cordialement,
Lionel
Partager