|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2002 Messages : 1 ![]() |
Bonjour,
Je dois retrouver la première valeur d'une table qui contient plusieurs dates : Voici un exemple de la table Cle Date Valeur A 20050110 5 A 20060220 6 B 20060515 9 C 20041020 3 C 20051015 7 Je dois retrouver Cle Date Valeur A 20060220 6 B 20060515 9 C 20051015 7 J'ai essayé plusieures requêtes du style : Select t.cle, t.date, t.valeur from TBL t, table (select cle, MAX(date) from TBL group by cle, date) tmp where t.cle = tmp.cle and t.date = tmp.date Mais c'est fort lourd. Est-ce que vous avez une idée pour alléger la sauce ? Bien à vous Serge |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Code :
|
||
|
|
00
|
|
|
#3 | |
|
Membre du Club
![]() Inscription : août 2006 Messages : 56 ![]() |
Citation:
Prennons les valeurs suivantes: A 20050110 9 A 20060220 5 A 20060220 4 Le query donnera: A 20060220 9 -> mélange des lignes, ce n'est pas forcément ce que l'on recherche. le MAX(date) ne correspondant plus au MAX(valeur). Le query le plus approprié sera - si l'on considère que la date prime sur la valeur (soit la valeur maximum à la dernière date) Select a.cle, a.date, max(a.valeur) from matable a where a.date in (select max(b.date) from matable b where a.cle = b.cle) group by a.cle order by a.cle - si l'on considère que la valeur prime sur la date (soit la dernière date pour la valeur maximum): Select a.cle, max(a.date), a.valeur from matable a where a.valeur in (select max(b.valeur) from matable b where a.cle = b.cle) group by a.cle order by a.cle Evidement les performances du query seront différentes. .
|
|
|
|
00
|
|
|
#4 | ||||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
ALHER,
Delch a donné un échantillon de sa table où ne figure aucun doublon sur la colonne date ni sur la colonne valeur. Je suis parti du fait que, puisque c'est un échantillon, le cas des doublons dates et/ou valeurs devrait y figurer. Or, il n'y figure pas. Et même s'ils existent, la requête que tu proposes ne fonctionnerait pas. Il manque la date ou la valeur sur le group by et la requête ne fonctionne que dans le cas où plusieurs lignes existent pour une même clé avec dates et/ou valeurs différentes. Selon l'exemple que tu donnes, les lignes non doublonnées sur la clé ne figurent pas dans le résultat de tes requêtes. En reprenant les données ton exemple et en y ajoutant la date sur le group by : Code :
Code :
sera perdue. J'attends la réaction de Delch pour savoir s'il y a lieu, comme tu le proposes, de distinguer une date et/ou une valeur particulière si doublons de dates et/ou valeurs sur la même clé. |
||||
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : août 2006 Messages : 56 ![]() |
Citation:
Citation:
Nous illustrons donc 3 cas: - une date maximun et un valeur maximum (indépendantes) pour une clé donnée. - une clé, une date maximum et la valeur maximum pour cette date. - une clé, la valeur maximum et la date maximum pour cette valeur A Delch de voir |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com