Bonjour à tous,
Je cherche à supprimer des doublons selon critères sous Teradata.
Voici comment se compose ma table :
Matricule; INDICATEUR; Mtant Engagement; Commentaire
1; A; 10; Erreur A
1; A; 8; Erreur A
1; B; 18; Erreur B
Je souhaite garder la ligne où le montant d'engagement est le plus élevé ==> Si la ligne du Matricule et de l'indicateur a un doublon alors comparer Montant engagement et supprimer la/les lignes pour laquel ce dernier est le plus faible. 1 COMAX peut avoir plusieurs indicateurs, c'est pourquoi dans cet exemple je souhaite supprimer la ligne 2.
J'ai donc consulté moult forum impossible d'avoir une réponse précise, certains me conseille d'utiliser une fonction de ce type pour numéroter les lignes (ROW_ID ne fonctionnant pas sous teradata)
Pas inintéressant, ceci équivaut à un
Code : Sélectionner tout - Visualiser dans une fenêtre à part (SELECT * from TCECOM_MCDB.V2TU09 qualify row_number() over (partition by MATRICULE Order by comax)=1); with datamais j'ai un peu de mal à m'y retrouver pour ajouter des clauses type WHERE/HAVING
Code : Sélectionner tout - Visualiser dans une fenêtre à part select distinct comax from table1
Ou encore de créer des tables temporaires:
Je n'ai pas tous les droits et supprimer la table source (table1 dans l'exemple) même si je recopie les données de la table temporaire (temp_table) n'est pas possible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 1. INSERT INTO temp_table SELECT DISTINCT * from Table1 2. Delete FROM table1 ALL; 3. INSERT INTO table1 SELECT * FROM temp_table;
Ce code est ce qui s'approche de plus (Hélas sous Mysql) :
Et ce lien ne m'a pas été d'une grande aide :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TEMPORARY TABLE tmp_product_id (id integer); INSERT INTO tmp_product_id SELECT id FROM product P1 INNER JOIN (SELECT modele, MIN(prix) AS minPrix FROM product GROUP BY modele) P2 ON P1.modele = P2.modele AND P1.prix = P2.minPrix; DELETE FROM product WHERE id NOT IN (SELECT id FROM tmp_product_id); DROP TABLE tmp_product_id;
http://sqlpro.developpez.com/cours/doublons/
Je suis prêt à passer sous access (pour cette partie de la requête) car le résultat final s'exportera sur excel.
Merci d'avance à tous ceux qui auront eu le courage de me lire.
Bon week end
Christophe
Partager