Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 18h01   #1
 
Theo
Inscription : décembre 2010
Messages : 1
Détails du profil
Informations personnelles :
Nom : Theo

Informations forums :
Inscription : décembre 2010
Messages : 1
Points : -2
Points : -2
Par défaut Requête avec fonction MAX

Bonjour,

Une question de débutant Oracle à vous les confirmés, dans la table suivante et dont les enregistrements sont :
Code :
1
2
3
4
5
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.

Code :
1
2
3
  SELECT MAX(DATE), NOM, MONTANT
    FROM MA_TABLE
GROUP BY NOM, MONTANT
Avec ma requête qui ne fonctionne pas, j'aimerais obtenir :
Code :
1
2
3
NOM DATE MONTANT
952r010001 27.07.2007 0.0017
952r010002 21.07.2009 0.0015
Qui me corrige s'il-vous-plaît ?

Merci...
theo99 est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 15/12/2010, 18h50   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Il y a plein de solutions, ROW_NUMBER, jointure max, KEEP FIRST, je vous laisse un peu chercher sur le forum.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 15h38   #3
Membre du Club
 
Inscription : décembre 2006
Messages : 119
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 119
Points : 61
Points : 61
Bonjour,

Tu peux utiliser les fonctions analytiques :
Code :
1
2
3
4
5
6
7
8
 
SELECT NOM, MONTANT, DATE
FROM
(
  SELECT  NOM, MONTANT, DATE, max(DATE) over (partition BY NOM) max_date
  FROM MA_TABLE
)
WHERE DATE=max_date
Cdlt.
__________________
La différence entre la théorie et la pratique, c'est qu'en théorie il n'y a pas de différence entre la théorie et la pratique. En pratique, si.
pat29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h59.


 
 
 
 
Partenaires

Hébergement Web