|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Eric Inscription : février 2011 Messages : 4 ![]() |
Bonjour, je veux recuperer la table de la forme suivante:
Code :
Cependant, en utilisant la fonction lag il me semble pas pouvoir metttre un truc du genre "lagonce=lag-1(x);" OU PEUT ETRE FAUT REGARDER AU NIVEAU D'UNE AUTRE FONCTION? MERCI BCP Code :
|
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
bonjour,
une sollution parmis d'autres. Code :
|
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Gaëtan Inscription : avril 2011 Messages : 29 ![]() |
Et sinon il me semble qu'en triant ta table dans l'autre sens (de 5 à 1) ça marche aussi.
|
|
|
00
|
|
|
#4 | |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
Citation:
![]() on peut réaliser sa aussi avec un merge de la table avec elle même et mettre comme first obs de l'une des table obs=2. je reviendrai pour la sollution après manger |
|
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Gaëtan Inscription : avril 2011 Messages : 29 ![]() |
Je viens de vérifier justement afin d'etre sûr.
Code :
edit : Par contre si la table est lourde les tris vont forcement ralonger les temps de traintement. |
||
|
|
00
|
|
|
#6 | ||
|
Nouveau Membre du Club
![]() Gaëtan Inscription : avril 2011 Messages : 29 ![]() |
à priori ce que tu veux faire c'est un équivalent de la fonction LEAD disponible dans d'autres langages il me semble, mais pas en SAS.
par contre je crois qu'avec une proc expand on peut y arriver Code :
|
||
|
|
00
|
|
|
#7 | ||||||||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
oui,c'est l'quivalent de la fonction LEAD qui faut réalisé mais avec ton code je ne crois pas que sa fonctionne avec la 1ére OBS,
démonstration @boutchiwah. j'ai fais ce test: Code :
Code :
Code :
mais voilà ce que j'ai : Code :
normalement on devrai obtenir deux valeurs manquantes dans le résultat. Au fait la valeur 1 doit disparaître dans lagance ce qui est logique. |
||||||||
|
|
00
|
|
|
#8 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 006 ![]() |
sollution avec le merge :
Code :
|
||
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Gaëtan Inscription : avril 2011 Messages : 29 ![]() |
oui mais là le problème c'esy qu'il n'y a qu'une seule variable dans nos table, elle joue donc le role d'identifiant ainsi que de variable à "lagger" ce qui pose forcement problème. Si tu rajoute une variale ID qui n'aura donc pas de valeur nulle le problème devrait etre résolu.
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Eric Inscription : février 2011 Messages : 4 ![]() |
Merci infiniment a vous s_a_m et boutchiwah...
la 1ere methode fonctionne nickel, concernant la 2nde, je n'ai pas acces a la procedure extend. bonne journee |
|
|
00
|
|
|
#11 | ||||||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Bonjour.
Je rebondis sur ce vieux topic pour proposer d'autres solutions, au cas où elles seraient utiles à quelqu'un. Solution 1 avec LAG. Le problème de LAG est que c'est une fonction qui ne fait que mémoriser des valeurs lues. Elle ne va pas dans la table rechercher des valeurs à une autre observation que celle en cours. On doit donc, comme le demande le titre de ce topic, lire la table à l'envers, pour mémoriser l'observation "suivante". Code :
Solution 2 : avec une fonction LEAD. (VERSION 9.2 et + UNIQUEMENT) Puisque la fonction LEAD n'existe pas, on va en créer une. Que doit-elle faire ? Aller à l'observation suivante de la table et récupérer la valeur qui va bien. Un petit test vérifiera qu'on n'a pas dépassé la dernière observation. Code :
Code :
|
||||||
|
|
20
|
|
|
#12 |
![]() ![]() Stéphane Consultant et formateur SAS et Cognos Inscription : avril 2009 Messages : 1 791 ![]() |
Je pense que l'idée est bonne et permet de comprendre la proc FCMP. Elle permet de faire évoluer les connaissances ce qui nous évite à tous de nous faire traiter de 'old school' ou de dinosaures.
Ca sert aussi à des gens comme nous de nous différencier lorsque l'on est en clientèle.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !Moteur de recherche dans les papiers SAS |
|
00
|
Copyright © 2000-2012 - www.developpez.com