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 30/11/2010, 11h31   #1
Invité de passage
 
Inscription : septembre 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 18
Points : 3
Points : 3
Par défaut Max Date et Group by

Bonjour,

Je souhaite extraire les prix1 et prix2 des lettres ayant la date la plus récente.

Lettres - Date - prix1 - prix2
A - 2010/11/01 - 1 - 2
A - 2010/10/01 - 2 - 3
B - 2010/09/01 - 4 - 5
B - 2010/08/01 - 6 - 7
C - 2010/07/01 - 8 - 9
C - 2010/06/01 - 10 - 11

Je souhaite donc avoir comme résultat :

Lettres - Date - prix1 - prix2
A - 2010/11/01 - 1 - 2
B - 2010/09/01 - 4 - 5
C - 2010/07/01 - 8 - 9

J'utilise un max sur la table(date) et un group by sur les tables(Lettres,prix1 et prix2) mais ca ne marche pas

Merci d'avance pour votre aide

Cordialement
Jackola est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 12h03   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 307
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 307
Points : 5 796
Points : 5 796
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
Connected TO Oracle DATABASE 10g Express Edition Release 10.2.0.1.0 
Connected AS mni
 
SQL> 
SQL> WITH DATA AS (
  2    SELECT 'A' AS Lettre, date '2010-11-01' AS Dat, 1 AS prix1, 2 AS prix2 FROM dual union ALL
  3    SELECT 'A', date '2010-10-01', 2, 3  FROM dual union ALL
  4    SELECT 'B', date '2010-09-01', 4, 5  FROM dual union ALL
  5    SELECT 'B', date '2010-08-01', 6, 7  FROM dual union ALL
  6    SELECT 'C', date '2010-07-01', 8, 9  FROM dual union ALL
  7    SELECT 'C', date '2010-06-01', 10, 11  FROM dual
  8  )
  9  SELECT lettre, Max(dat) Dat,
 10         Max(prix1) keep (dense_rank last ORDER BY dat) Prix1,
 11         Max(prix2) keep (dense_rank last ORDER BY dat) Prix2
 12    FROM DATA
 13  GROUP BY lettre
 14  /
 
LETTRE DAT              PRIX1      PRIX2
------ ----------- ---------- ----------
A      01/11/2010           1          2
B      01/09/2010           4          5
C      01/07/2010           8          9
 
SQL>
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 14h37   #3
Invité de passage
 
Inscription : septembre 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 18
Points : 3
Points : 3
Par défaut Max date et group by

ok MERCI
Jackola est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h30.


 
 
 
 
Partenaires

Hébergement Web