Récupérer la dernier valeur d'un select [Résolu/Fermé]

Signaler
Messages postés
109
Date d'inscription
mercredi 13 février 2013
Statut
Membre
Dernière intervention
22 janvier 2020
-
 JsuisNul -
Bonjour,

Je souhaiterai faire une requête SQL qui me retourne que la dernier valeur d'un select.

j'ai un tableau comme suit :

ID - valeur - periode

Mat1 a MT201301
Mat1 b MT201302
Mat1 c MT201303
Mat1 D MT201304
Mat2 a MT201301
Mat2 b MT201302
Mat2 c MT201303
Mat2 D MT201304
Mat2 E MT201305
Mat2 F MT201306



je voudrais pourvoir récupérer :

pour Mat1 la velaur "D"
et pour le Mat2 la valeur "F"

Si vous quelqu'un a une idée je suis preneur.

Merci d'avance

4 réponses

Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 262
Bonjour,

SELECT * FROM tableau 
WHERE id='Mat2'
ORDER BY valeur Desc
LIMIT 0,1

A+
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
29690
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
28 septembre 2020
6 770
Bonjour,

LIMIT n'existe pas avec le sql d'Oracle.

cdlt
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 262
vous avez pas parlé de ORACLE dans le message d'origine. Donc, faire:

SELECT * FROM tableau 
WHERE id='Mat2'
   AND ROWNUM <2
ORDER BY valeur Desc
Messages postés
29690
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
28 septembre 2020
6 770
La question est dans le forum
Base de données / Oracle
;-)

Le rownum étant défini avant l'order by, il serait préférable de faire

SELECT * FROM ( SELECT * FROM tableau 
  WHERE id='Mat2'
  ORDER BY valeur Desc )
WHERE  ROWNUM < 2


Le demandeur n'ayant pas précisé s'il voulait donner en paramètre l'id ou s'il les voulaient tous d'un coup, la solution de francis0001 me parait plutôt bien.
Messages postés
22
Date d'inscription
jeudi 11 décembre 2008
Statut
Membre
Dernière intervention
23 décembre 2013
1
Je pense que la requête la plus adaptée serait :

SELECT ID, max(valeur) As valeur, periode
FROM test
GROUP BY ID;
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
994
Date d'inscription
lundi 23 juillet 2012
Statut
Membre
Dernière intervention
28 mai 2019
151
SELECT id, valeur, periode, LAST_VALUE(valeur) OVER FROM (SELECT * FROM tableau);
Bonjour,

La réponse de Francis fonctionne correctement et correspond à ce que je souhaite.

Merci à tous pour votre aide.