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

Résolu
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. Bonjour,

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

    A+
    1
    1. Modérateur
      Bonjour,

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

      cdlt
      0
    2. 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. Modérateur
      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. Je pense que la requête la plus adaptée serait :

    SELECT ID, max(valeur) As valeur, periode
    FROM test
    GROUP BY ID;
    1
    1. SELECT id, valeur, periode, LAST_VALUE(valeur) OVER FROM (SELECT * FROM tableau);
      0
      1. Bonjour,

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

        Merci à tous pour votre aide.
        0