IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Récupérer dernière plus grande ligne de ma table [19c]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut Récupérer dernière plus grande ligne de ma table
    Bonjour,

    Je souhaiterais récupérer la dernière occurrence de mon enregistrement, comment dois-je procéder ?

    id numérosecu numligne nom prenom datedebut datefin
    1234 12345678910 1 TOTO TATA 01/01/2012 31/12/2012
    1234 12345678910 2 TOTO TATA 01/01/2013 31/12/2013
    1234 12345678910 3 TOTO TATA 01/01/2014 31/12/2999

    Le comportement attendu c'est que je souhaiterais récupérer la ligne suivante :

    1234 12345678910 3 TOTO TATA 01/01/2014 31/12/2999

    J'ai essayé avec la requête suivante, mais malheureusement sans succès :s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select *
    from table1
    inner join (
    select id, max(numligne) as numligne_max
    from table2
    group by id) t
    on t.id= b.id
    and t.numligne_max= b.id
    where numérosecu = '12345678910';
    Vous remerciant par avance de votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    A priori c'est correct, c'est juste le nom de la table qui est bizarre. Si c'est la même table tu devrais avoir le même nom dans les 2 from, or là c'est différent.
    Tu peux aussi utiliser la fonction analytique row_number pour obtenir ce que tu cherches.

  3. #3
    Membre confirmé
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    Bonjour,

    Merci pour cette réponse vanagreg
    En faite ce sont 2 tables bien différentes le numéro de sécu je ne l'ai que dans la table1

    Je pense que j'ai du me mélanger les pinceaux

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Pour les informations de la table 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      select id
           , max(numligne)                                                as numligne
           , max(nom)       keep(dense_rank first order by numligne desc) as nom
           , max(prenom)    keep(dense_rank first order by numligne desc) as prenom
           , max(datedebut) keep(dense_rank first order by numligne desc) as datedebut
           , max(datefin  ) keep(dense_rank first order by numligne desc) as datefin
        from table2
    group by id

  5. #5
    Membre confirmé
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    Bonjour Waldar,

    Je te remercie pour ta réponse
    Pourrais-tu m'expliquer keep(dense_rank first) je ne le comprend pas vraiment
    En tout cas je ne connaissais pas (merci j'en apprend tout les jours )

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Tu as un tuto bien fait par Lalystar sur les fonctions analytiques : https://lalystar.developpez.com/fonctionsAnalytiques/

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

Discussions similaires

  1. [AC-2010] Récupérer l'avant dernière plus grande valeur d'un champ
    Par shakapouet dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/07/2012, 15h20
  2. récupérer le nombre de lignes d'une table interne.
    Par progamer54 dans le forum SAP
    Réponses: 6
    Dernier message: 26/08/2008, 18h06
  3. un SELECT qui retourne plus de ligne que la table
    Par gomodo dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/10/2007, 15h17
  4. Réponses: 2
    Dernier message: 20/03/2007, 14h39
  5. Réponses: 2
    Dernier message: 20/02/2007, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo