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

Résolu
JsuisNul Messages postés 137 Statut Membre -  
 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

  1. mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   1 343
     
    Bonjour,

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

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

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

      cdlt
      0
    2. mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   1 343
       
      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
    3. jee pee Messages postés 31885 Date d'inscription   Statut Modérateur Dernière intervention   9 980
       
      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
  2. francis0001 Messages postés 23 Statut Membre 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
  3. tuxboy Messages postés 1083 Statut Membre 190
     
    SELECT id, valeur, periode, LAST_VALUE(valeur) OVER FROM (SELECT * FROM tableau);
    0
  4. JsuisNul
     
    Bonjour,

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

    Merci à tous pour votre aide.
    0