Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Futur Membre du Club
    Inscrit en
    avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 62
    Points : 18
    Points
    18

    Par défaut Sélectionner la valeur la plus récente entre des doublons

    Bonjour tous,

    J'aimerais lors d'une sélection de données dans une table, pouvoir ne sélectionner que l’enregistrement le plus ressent en cas de doublons.
    J'illustre par un exemple:
    J'ai une table d'identification pour les locataires d'un véhicule qui entre autre comporte les champs
    Code :
    Id_vehicule, ..., date_insertion
    .
    Pour une raison que j'ignore, aucun champ n'est prévu pour le statut de l'enregistrement (ce qui aurait simplifié mon travail). J'aimerais lors des sélections dans la table, en cas de doublons trouvé sur le champ id_vehicule, ne sélectionner que les enregistrements avec le champ insert_date le plus ressent.

    Merci d'avance!

  2. #2
    Modérateur

    Homme Profil pro Fabien
    Ingénieur d'études en décisionnel
    Inscrit en
    septembre 2008
    Messages
    6 893
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabien
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études en décisionnel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : septembre 2008
    Messages : 6 893
    Points : 14 332
    Points
    14 332

    Par défaut

    Vous pouvez rajouter une colonne à votre sélection dans un premier temps, puis filtrer dessus dans un second :
    Code :
    1
    2
    3
    4
    5
    select Id_vehicule, ..., date_insertion
      from (select Id_vehicule, ..., date_insertion
                 , row_number() over(partition by Id_vehicule order by date_insertion desc) as rn
              from ...)
     where rn = 1;

  3. #3
    Futur Membre du Club
    Inscrit en
    avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 62
    Points : 18
    Points
    18

    Par défaut

    Merci Waldar, je vais essayer cela et voir si j'ai satisfaction...

  4. #4
    Membre du Club
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    octobre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : octobre 2002
    Messages : 50
    Points : 50
    Points
    50

    Par défaut

    Code :
    1
    2
    3
    SELECT Id_vehicule, date_insertion
    FROM (SELECT Id_vehicule, max(date_insertion) FROM ...
             GROUP BY Id_vehicule          )

  5. #5
    Futur Membre du Club
    Inscrit en
    avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 62
    Points : 18
    Points
    18

    Par défaut

    Citation Envoyé par vttvolant Voir le message
    Code :
    1
    2
    3
    SELECT Id_vehicule, date_insertion
    FROM (SELECT Id_vehicule, max(date_insertion) FROM ...
             GROUP BY Id_vehicule          )
    merci pour ta contribution vttvolant mais je pense pas que ta solution soit bonne, car à mon avis elle n'opère qu'un regroupement en ne maintenant que la date la plus récente.

    Par contre celle Waldar me renvoie le résultat souhaité. Merci encore à tous!

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •