SQL server -doublons

Bonjour,

 je voulais enlever les doublons mais  avec des conditions , 

exemple de résultat de ma requête : 

  1. non    200   alain   alian   A100  2022/01/01    2022/05/05
  2. non    500   alain   alian   NULL  2023/01/01    2023/09/15
  3. non    600   alain   alian   NULL  2025/01/01     2025/10/28
  4. OUI    200   alain   alian   A100  2022/01/01     2022/09/09

Je voulais enlever le 1 ligne qu'est en doublon avec le 4 

​​​​​​​je suis bloqué je réfléchi par le dernier enregistrement mais logiquement 1 et 4 non pas en doublons 

je suis bloqué :(

2 réponses

  1. Modérateur

    Bonjour,

    Un doublon s'analyse sur les informations qui sont des composants d'une clé, quels sont-ils pour cette table ?


    0
    1. Modérateur

      Supposons la table

          col1   col2  col3    col4    col5  col6          col7   
          non    200   alain   alian   A100  2022/01/01    2022/05/05
          non    500   alain   alian   NULL  2023/01/01    2023/09/15
          non    600   alain   alian   NULL  2025/01/01    2025/10/28
          OUI    200   alain   alian   A100  2022/01/01    2022/09/09

      et que la notion de doublon soit sur col2 (id), col6 (date début) et que le critère pour déterminer le doublon à conserver soit col7 (date fin), en conservant le plus grand. On pourrait appliquer le code sql suivant pour supprimer le 1er enregistrement.

      delete from table where
          (col2,col6,col7) in
          (
              (
               select col2,col6,col7 from table where
               (col2,col6) in
                  (
                   select col2,col6 from table
                      group by col2,col6 having count(*) > 1
                  )
              )
              minus
              (
              select col2,col6,max(col7) from table
                      group by col2,col6 having count(*) > 1
              )
          )

      0