Requête SQL

Bonjour,

Une question de débutant ORACLE à vous les confirmés, dans la table suivante et dont les enregistrements sont:

NOM DATE MONTANT
952r010001 27.07.2007 0.0017
952r010001 25.09.2006 0.002
952r010001 23.04.2005 0.005
952r010002 21.07.2009 0.0015

Je veux, pour ces données, ne ressortir que les lignes par nom à la date la plus récente.

SELECT MAX(DATE), NOM, MONTANT
FROM MA_TABLE
GROUP BY NOM, MONTANT

Pour obtenir:

NOM DATE MONTANT
952r010001 27.07.2007 0.0017
952r010002 21.07.2009 0.0015

Qui me corrige s'il vous plait ?

Merci...

3 réponses

  1. SELECT NOM, DATE, MONTANT
    FROM ma_table
    WHERE (NOM,DATE) IN (SELECT NOM, MAX(DATE)
    FROM ma_table
    GROUP BY NOM);

    http://www.dba-ora.fr
    1. SELECT MAX(DATE), NOM, MONTANT,DATE
      FROM MA_TABLE
      ORDER BY date
      GROUP BY NOM, MONTANT

      apres "date" dans le order du indique
      ASC pour ascendant ou
      DESC pour l'inverse , sachant que par defaut c'est ASC
      1. Bonjour Damienmv,

        Je te remercie pour ta réponse, toutefois celle ci n'épure pas ma table comme je le voudrais. En effet, je ne cherche à obtenir, pour chaque nom, que le montant à la date max (la plus récente).

        Une correction à me proposer ?

        Encore merci
        1. je sais pas si c'est cela , mes dit moi si c'est pas sa :)

          bn courage ..

          SELECT MAX(DATE) AS datemax, NOM, MONTANT,DATE
          FROM MA_TABLE
          ORDER BY datemax
          GROUP BY NOM, MONTANT