|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() François-Olivier Lefevre Inscription : mars 2011 Messages : 4 ![]() |
Bonjour à tous,
J'ai une table TEMP avec les champs NOM, ACTION, DATE_ACTION triée par NOM et DATE_ACTION. Je veux récupérer les 10 dernières actions (10 max DATE_ACTION) de chaque nom. J'ai cherché dans les options OUTOBS, avec la fonction MAX mais je ne trouve pas. Merci de votre aide (j'espère avoir été clair pour ce premier post sur le forum !). |
|
|
00
|
|
|
#2 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
bonjour;
sous quel format sont tes dates. ? |
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Sinon tu tries dans le sens inverse et dans les options de ton dataset,
tu demandes à SAS: Et il te restituera que ce que tu lui demandes Sinon pourquoi faire simple si on peut faire plus compliqué?: Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Inscription : mars 2003 Messages : 149 ![]() |
Bonjour,
Je te propose le code suivant, il faut créer une variable num_action qui s'incrémente à chaque ligne puis récupérer les 10 premières valeurs. Il faut bien sur que DA_ACTION soit au format Date, c'est à dire une variable num. Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() François-Olivier Lefevre Inscription : mars 2011 Messages : 4 ![]() |
Merci pour vos réponses rapides !
@SAM : Mes dates sont de type numérique au format (ddmmyy10.) @Megamind : merci pour ta réponse mais j'ai du mal à comprendre A+ |
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Si tu tries ta variable date dans l'orde décroissante et que tu ne veux garder que les 10 premières observations:
firstobs=1 /* tu commence à extraire à partir de la ligne une*/ obs=10 /* tu gardes 10 observations*/ Si tu tries dans l'ordes croissantes, tes 10 denières valeurs se trouvent à la fin de ton fichier, donc tu as besoin de savoir à partir quelle position occupe ta premère ligne à extraire*/: Code :
|
||
|
|
00
|
|
|
#7 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
essaie ce code:
PS: pas testé car j'ai pas SAS; Code :
|
||
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
@la2002, tu pouvais faire plus simple, mais chacun résonne différemment
Code :
|
||
|
|
00
|
|
|
#9 | |||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Moi j'ai compris qu'il voulais 10 dates les plus recentes, donc une fois trié dans l'ordre decroissante, il suffit juste de se débrouiller à récupérer les 10 premères lignes. J'ai pas dit que c'est faux, mais juste que c'est plus simple
|
|
|
00
|
|
|
#11 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
|
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
@la2002, je me suis inspiré de ton programme mais ne fait pas ce qu'il voulait, dans cet exemple je ne garde que deux dates plus récentes par personne:
Code :
|
||
|
|
00
|
|
|
#13 |
|
Membre actif
![]() Inscription : mars 2003 Messages : 149 ![]() |
@SAM : je suis d'accord il cherche les 10 dates les plus récentes par nom.
@MEGAMIND : Normal que ton programme te sort les 2dates les plus récentes puisque tu filtres sur Num_action in (1,2) La difficulté du pb que je n'ai pas détaillé dans mon code si folefevre désire conserver les ex aequo entre les 10emes dates et les suivantes. |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() François-Olivier Lefevre Inscription : mars 2011 Messages : 4 ![]() |
Je cherche bien les 10 dates les plus récentes par groupe d'observations (en l'occurence par NOM).
Je peux garder les exaequo. Je vais tester vos propositions ! |
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
@la2002 :Justement, j'ai bien précisé que je ne garde que 2 dates les plus récentes dans cet exemple, je vais pas me taper 20 lignes non plus
|
|
|
00
|
|
|
#16 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
scusez moi; je reviens sur la solution que j'ai proposé ;
Code :
|
||
|
|
00
|
|
|
#17 | ||
|
Membre actif
![]() Inscription : mars 2003 Messages : 149 ![]() |
Voici un code qui garde les ex aexquo.
Code :
|
||
|
|
00
|
|
|
#18 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
@Sam: ton code ne fonctionne pas, tu peux tester toi même:
Code :
|
||
|
|
00
|
|
|
#19 | ||
|
Membre habitué
![]() Géraldine CADE DESCHAMPSSupport Clients SAS (France et Europe) Inscription : février 2010 Messages : 62 ![]() |
Bonjour,
Il y a un exemple sur le site du support SAS : ------- http://www.sas.com/offices/europe/fr...se.html#base28 Comment conserver les dix meilleurs résultats (top ten) obtenus par groupe ? L'idée est de créer un compteur, par groupe, et de ne garder que les valeurs inférieures ou égales à dix. Prenons un exemple : comment conserver les dix meilleures ventes de chaque pays, dans la table sashelp.prdsale ? Code :
Dans cet exemple, on utilise la lecture "set MATABLE; by GROUPE; ". La variable de groupe est "pistée" en quelques sorte avec les notations first.GROUPE et last.GROUPE, qui permettent de déterminer si l'on ait sur la première ou la dernière observations d'une valeur donnée. Par exemple, si 5 observation ont COUNTRY='FRANCE', alors sur la 1ère observation on aura first.country=1 tandis que les autres auront first.country=0. De même sur la 5ème observation on aura last.country=1 tandis que sur les 4 précédentes on aura last.country=0. Géraldine CADE-DESCHAMPS Support Clients SAS |
||
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Géraldine
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com