bonjour
sur une base ORACLE 8i, j'ai la table suivante
CREATE TABLE TMP_TSC (
CODSOC NUMBER,
ACHVTE VARCHAR2 (1),
SIGTIE VARCHAR2 (12),
CODPRO VARCHAR2 (16),
CODREG VARCHAR2 (3),
CODETB VARCHAR2 (3),
CODDEV VARCHAR2 (3),
CODBAR VARCHAR2 (3),
CODVAR VARCHAR2 (2),
DATDEB VARCHAR2 (8 ),
TARCOL VARCHAR2 (1),
PRXTAR NUMBER,
PRXREV NUMBER,
MARGE NUMBER,
RGLARR VARCHAR2 (3),
CODUNI VARCHAR2 (3),
DATFIN VARCHAR2 (8 ),
INDINT VARCHAR2 (1),
DATMOD VARCHAR2 (8 ),
UTIMOD VARCHAR2 (8 ))
TABLESPACE DATGNX1
PCTFREE 10
PCTUSED 40
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 193249280
NEXT 24055808
PCTINCREASE 10
MINEXTENTS 1
MAXEXTENTS 120
FREELISTS 1 FREELIST GROUPS 1 )
NOCACHE;
dans laquelle se trouve des enregistrements avec CODPRO identique, DATDEB different et PRXTAR different.
la requete SELECT * from TMP_TSC retourne
CODSO CCODBAR CODPRO DATDEB PRXTAR
5610 VB3 100102 20050103 4
5610 VB3 100102 20050305 4,6
5610 VB3 100102 20050703 4,2
5610 VB3 110001 20040102 12,1
5610 VB3 110001 20051112 11
5610 VB3 110002 20050505 14,1
5610 VB3 110002 20050701 15,0
Je voudrais modifier DATDEB=20060107 pour les enregistrements dont
CODSOC=5610
CODBAR=VB3
CODPRO identique et MAX(DATDEB) - date la plus recente -
(En fait l'enregistrement le plus recent pour chaque ligne comportant un meme CODPRO).
soit dans mon cas obtenir le resultat suivant
CODSOC CODBAR CODPRO DATDEB PRXTAR
5610 VB3 100102 20050103 4
5610 VB3 100102 20050305 4,6
5610 VB3 100102 20060107 4,2 <--
5610 VB3 110001 20040102 12,1
5610 VB3 110001 20060107 11 <--
5610 VB3 110002 20050505 14,1
5610 VB3 110002 20060107 15,0 <--
la requete:
SELECT * from (SELECT CODPRO,MAX(DATDEB) FROM TMP_TSC where CODSOC=5610 and codbar='VB3' group by CODPRO)
retourne les enregistrements que je souhaite modifier ... mais je n'arrive pas à la convertir en update ''
merci de votre aide. ''
Partager