Bonjour,
J'ai ces données:
A 12/02/2004
B 15/08/2003
C 16/10/1998
Comment puis-je faire pour sélectionner la date la plus récente ? (en pl/sql, oracle 9i)
Merci!
Bonjour,
J'ai ces données:
A 12/02/2004
B 15/08/2003
C 16/10/1998
Comment puis-je faire pour sélectionner la date la plus récente ? (en pl/sql, oracle 9i)
Merci!
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT MAX(ChampDate) FROM TaTable
humok !
Mais maintenant, si je veux sélectionner les autres infos de la tables (sur la même ligne, je dois faire un join left select... etc ?)
Car sinon j'ai une erreur "la fonction de groupe ne porte pas sur un groupe simple"
merci!
Ca dépend de ta problématique... Moi j'utiliserais un GROUP BY si tous les champs que tu veux récupérer font partie de la clé ou alors une sous-requête...
Tu dois procéder ainsi :
Les champs non concernés par une fonction d'aggrégation (MAX, SUM, etc.) doivent être dans la clause "Group By"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Champ1, Champ2, MAX(Champ3) FROM MaTable GROUP BY Champ1, Champ2
un petit tour par les tutos me semble incontournable
- cf Le simple (?) SELECT pour commencer
- et ensuite : Groupage, ensembles et sous ensembles
Merci beaucoup!
j'ai néanmoins résolu mon problème avec cette requête :
Peut etre n'est elle pas optimisée...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT * FROM maTable ab where ab.maDate in (SELECT max(mc.maDate) FROM maTable mc WHERE mc.MonChamp='MO') and ab.MonChamp='MO'
Merci en tout cas!
Non, elle n'est pas optimisée
"IN" est fait pour parcourir un liste de valeurs. Or, un "SELECT MAX" ne te ramènera qu'une seule ligne possible (attention néanmoins au NULL)
Donc tu peux remplacer "IN" par "=" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT * FROM maTable ab WHERE ab.maDate = (SELECT MAX(mc.maDate) FROM maTable mc WHERE mc.MonChamp = 'MO') and ab.MonChamp = 'MO'
Bon, là je suis perdu
Voilà ce que je souhaitais faire :
j'ai
Entité---Date---Note---Agence
A---22/11/2005---B---A1
A---17/09/2003---A---A1
A---24/04/2005---C---A2
A---29/08/2003---B---A2
et je souhaite arriver à :
A---22/11/2005---B---A1
A---22/11/2005---C---A2 (car la note d'A2 est C depuis 24/04/05)
A---17/09/2003---A---A1
A---17/09/2003---B---A2 (car la note d'A2 est B depuis 29/08/2003)
Et là je m'enfonce dans ma requête
qq1 aurait une idée simple ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager