vespa Posté 25 Février 2013 Posté 25 Février 2013 Bonjour, Je n'arrives pas à bâtir une requête.. J'ai une table "items" qui comportent plusieurs champs : name, description, date... Certaines lignes sont en doubles c'est à dire même "name", même "description" seul la date change Je dois supprimer tous les doublons en gardant le "name", "description" ayant la date la plus récente... J'ai passé mon dimanche sur ce SQL. Je précise que cette table est sur DB2 et que je n'ai aucun pouvoir dessus, je dois juste faire ce nettoyage. Merci d'avance pour votre aide.
Portekoi Posté 25 Février 2013 Posté 25 Février 2013 Bonjour, DB2 ou non, cela ne change pas grand chose. SELECT A.* FROM Item a Where Name + '' + Cast(Date as Varchar(20)) in ( Select Name + '' + Cast(Date as Varchar(20)) From item Where Name = a.Name And Cast(Date as Varchar(20)) In ( Select Max(Date) from item Where Name = a.Name ) ) Cette requête va te retourner les items les plus récentes. Portekoi
jcaron Posté 25 Février 2013 Posté 25 Février 2013 Probablement quelque chose comme: DELETE FROM table WHERE (name,description,date) IN (SELECT name,description,min(date) FROM table GROUP BY 1,2 HAVING count(*)>1) Non? Evidemment, fais une copie de ta table d'abord, et fais un SELECT à la place du DELETE dans un premier temps pour vérifier que ça supprime bien ce que tu veux. Jacques.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant