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

Résolu
JsuisNul Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -  
 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

mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Bonjour,

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

A+
1
jee pee Messages postés 41513 Date d'inscription   Statut Modérateur Dernière intervention   9 716
 
Bonjour,

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

cdlt
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
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 41513 Date d'inscription   Statut Modérateur Dernière intervention   9 716
 
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   Statut Membre Dernière intervention   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
tuxboy Messages postés 995 Date d'inscription   Statut Membre Dernière intervention   190
 
SELECT id, valeur, periode, LAST_VALUE(valeur) OVER FROM (SELECT * FROM tableau);
0
JsuisNul
 
Bonjour,

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

Merci à tous pour votre aide.
0