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
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau
"Expliquer empêche de comprendre si cela dispense de chercher"
Quiz Oracle : venez tester vos connaissances !
La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
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'
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau
"Expliquer empêche de comprendre si cela dispense de chercher"
Quiz Oracle : venez tester vos connaissances !
La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Partager