Récupérer la dernier valeur d'un select

Résolu/Fermé
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - 20 déc. 2013 à 17:27
 JsuisNul - 23 déc. 2013 à 10:53
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

mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
21 déc. 2013 à 09:18
Bonjour,

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

A+
1
jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 233
21 déc. 2013 à 18:02
Bonjour,

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

cdlt
0
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
21 déc. 2013 à 22:13
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
0
jee pee Messages postés 39622 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 233
Modifié par jee pee le 21/12/2013 à 22:44
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.
0
francis0001 Messages postés 22 Date d'inscription jeudi 11 décembre 2008 Statut Membre Dernière intervention 23 décembre 2013 1
21 déc. 2013 à 14:19
Je pense que la requête la plus adaptée serait :

SELECT ID, max(valeur) As valeur, periode
FROM test
GROUP BY ID;
1
tuxboy Messages postés 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 189
20 déc. 2013 à 17:34
SELECT id, valeur, periode, LAST_VALUE(valeur) OVER FROM (SELECT * FROM tableau);
0
Bonjour,

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

Merci à tous pour votre aide.
0