OVH Cloud OVH Cloud

Problème requête

3 réponses
Avatar
geoffroy
Bonjour,

J'ai une table du genre :

ID_unique DATE_MaJ NumSalarie NomSalarie NomJeuneFille
00001 15/02/2005 10 LEROY LEROY
00002 18/02/2005 15 DUPONT DUPONT
00003 20/02/2005 10 LEROY GUEDON

Je ne peux pas modifier cette table car elle fait partie intégrante d'une
application.
Mme LEROY s'est mariée entre le 15/02 et le 20/02 don son nom de salarié à
changer.

Ma question :
En SQL, je voudrais supprimer de cette liste, les doulons du NumSalarie en
ne gardant que les occurence les plus récente. Pour n'avoir que :

ID_unique DATE_MaJ NumSalarie NomSalarie NomJeuneFille
00002 18/02/2005 15 DUPONT DUPONT
00003 20/02/2005 10 LEROY GUEDON

C'est sans doute un cas d'école mais je n'y arrive pas.
Merci de votre aide
Cordialement
Geoffroy

3 réponses

Avatar
Gilles
Un truc du style

Select * from tablesal ts1 where TS1.date_maj (Select max(TS2.date_maj) from tablesal TS2 WHERE TS2.Numsalarie =
TS1.Numsalarie)


Gilles
Avatar
Gilles
Donc pour trouver les lignes à supprimer

SELECT * from tablesal ts3 WHERE TS3.id not in
(Select id from tablesal ts1 where TS1.date_maj (Select max(TS2.date_maj) from tablesal TS2 WHERE TS2.Numsalarie =
TS1.Numsalarie))

gilles
Avatar
Gilles
Oups en changeant le signe cela suffit pour avoir les ligne en doublon :-)

Select * from tablesal ts1 where TS1.date_maj <>
(Select max(TS2.date_maj) from tablesal TS2 WHERE TS2.Numsalarie TS1.Numsalarie)

Gilles