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
    2
    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
      0
      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
        0
        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
          0