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

 Oracle Discussion :

Extraire les enregistrements dont la date est la plus recente


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 209
    Points : 73
    Points
    73
    Par défaut Extraire les enregistrements dont la date est la plus recente
    Bonjour
    Sur oracle 11 sous windows
    J’ai une table ayant les enregistrements suivant
    300571049 03/01/14 1303
    300571049 03/05/14 1703
    300571050 03/02/14 1303
    300571050 03/05/14 1403
    300571050 03/06/14 1603
    Je désire en extraire les enregistrements dont la date est la plus récente
    C’est a dire
    300571049 03/05/14 1703
    300571050 03/06/14 1603


    D'avance merci de toutes pistes

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    En l'absence de toute information sur la structure de ta table dans le message, la requête serait du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT	mon_id
    	,	ma_date
    	,	mes_datas
    FROM	ma_table	tb1
    WHERE	EXISTS
    		(	SELECT	NULL
    			FROM	ma_table	tb2
    			WHERE	tb1.mon_id	= tb2.mon_id
    			HAVING	tb1.ma_date	= MAX(tb2.ma_date)
    		)
    ;
    Toutefois, une petite recherche dans ce forum t'aurait permis de trouver la réponse à cette question qui revient très (trop) régulièrement.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il y a beaucoup de solutions à ce problème.

    Les deux que j'utilise sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      select le_code
           , max(la_date) as la_date
           , min(la_valeur) keep(dense_rank first order by la_date desc) as la_valeur
        from ma_table
    group by le_code;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With SR (le_code, la_date, la_valeur, rn) as
    (
    select le_code, la_date, la_valeur
         , row_number() over(partition by le_code order by la_date desc)
      from ma_table
    )
    select le_code, la_date, la_valeur
      from SR
     where rn = 1;
    La première est une syntaxe propriétaire d'Oracle, la seconde est normative.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Ou alors FIRST et LAST, s'il n'y a pas besoin d'éventuels ex æquo.

Discussions similaires

  1. Récupérer la ligne dont la date est la plus récente
    Par Roflcho dans le forum Langage SQL
    Réponses: 10
    Dernier message: 03/02/2016, 11h45
  2. Réponses: 8
    Dernier message: 29/01/2010, 14h48
  3. Réponses: 5
    Dernier message: 27/04/2008, 12h35
  4. Copier les fichiers d'un répertoire dont la date est supérieure à x
    Par tatayoyo dans le forum Shell et commandes GNU
    Réponses: 17
    Dernier message: 03/10/2006, 14h28
  5. Réponses: 4
    Dernier message: 27/04/2006, 09h22

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