Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
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 10/11/2011, 15h39   #1
Membre du Club
 
Homme
sas
Inscription : juillet 2011
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : sas
Secteur : Conseil

Informations forums :
Inscription : juillet 2011
Messages : 70
Points : 51
Points : 51
Par défaut Modifier les données d'une table sas

Bonjour,
supposant que j'ai une table de cette forme.
les deux cles etangère sont ID1 et ID2.
si par exemple on prend ID1=1 et ID2=1 on a deux section NO=2 et NO=4
Pour la premiere section ou NO=2,
la DT_EFF_SC = 01-oct-50 (reste comme elle est )
et DT_EFF_TX=DT_EFF_SC de la deuxième obs - 1 jour d'ou
DT_EFF_TX=31-dec-60


pour la deuxième section NO=2
DT_EFF_SC = 01-janv-61 et
DT_EFF_TX =31/12/9999

Pareil pour le reste des donnée

ID1 ID2 NO CO DT_EFF_SC DT_EFF_TX
1 1 2 A 01-oct-50 01-oct-50
1 1 2 A 01-janv-61 01-janv-61
1 1 4 G 01-oct-50 01-oct-50
1 1 4 G 01-janv-61 01-janv-61
1 1 4 G 01-janv-67 01-janv-67
1 1 4 H 01-janv-67 01-janv-67
37 37 1 A 01-janv-51 01-janv-51
37 37 1 B 01-janv-51 01-janv-51
37 37 2 A 01-janv-51 01-janv-51
37 37 2 B 01-janv-51 01-janv-51


voici les données attendu

ID1 ID2 NO CO DT_EFF_SCT DT_EFF_TX
1 1 2 A 01-oct-50 31/12/1960
1 1 2 A 01-janv-61 31/12/9999
1 1 4 G 01-oct-50 31/12/1960
1 1 4 G 01-janv-61 31/12/9999
1 1 4 G 01-janv-67 31/12/9999
1 1 4 H 01-janv-67 31/12/9999
37 37 1 A 01-janv-51 31/12/1950
37 37 1 B 01-janv-51 31/12/9999
37 37 2 A 01-janv-51 31/12/1950
37 37 2 B 01-janv-51 31/12/9999


Merci a tous

cordialement
m.brahim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 15h47   #2
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
c'est quoi le problème?
Tu peux envoyer du code pour créer les tables?
Cela nous permettra de tester rapidement
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 16h02   #3
Membre du Club
 
Homme
sas
Inscription : juillet 2011
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : sas
Secteur : Conseil

Informations forums :
Inscription : juillet 2011
Messages : 70
Points : 51
Points : 51
Le problème est le suivant .
je cherche une solution afin d'obtenir la table attendu à partir de la table initiale.

sinon pour les données la premièr table est un echantillon de données.

la deuxième table est la table attendu
m.brahim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 20h44   #4
Membre à l'essai
 
Homme Jean-François Marchand
Analyste d'exploitation
Inscription : octobre 2008
Messages : 30
Détails du profil
Informations personnelles :
Nom : Homme Jean-François Marchand
Localisation : Canada

Informations professionnelles :
Activité : Analyste d'exploitation
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : octobre 2008
Messages : 30
Points : 24
Points : 24
Voici une solution

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
 
PROC SORT DATA = MONFICHIER; BY ID1 ID2 NO CO DESCENDING DT_EFF_SC;   RUN;
 
DATA RESULTAT;
SET   MONFICHIER;
BY     ID1 ID2 NO CO DESCENDING DT_EFF_SC;
RETAIN  DATE_TEMP;
KEEP  ID1 ID2 NO CO DT_EFF_SC DT_EFF_TX;
 
 
     IF LAST.NO AND NOT FIRST.NO THEN DT_EFF_TX = DATE_TEMP;
     ELSE DO; 
         DATE_TEMP = DT_EFF_SC - 1;
         IF NOT LAST.NO THEN
               DT_EFF_TX  = '31DEC9999'D;
     END;
RUN;
 
PROC SORT DATA = RESULTAT; BY ID1 ID2 NO CO DT_EFF_SC;   RUN;
Cela devrait faire le résultat attendu....
DEMMAR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 13h24   #5
Membre du Club
 
Homme
sas
Inscription : juillet 2011
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : sas
Secteur : Conseil

Informations forums :
Inscription : juillet 2011
Messages : 70
Points : 51
Points : 51
Bonjour,

J'ai toujours pas resolu mon problème.

votre idée est bonne mais reste quelque soucis.

1) la valeur du fist du DT_EFF_TX= DT_EFF_SCT (de l'observation N+1)-1jour
2) le reste des obeservation =31DEC9999

voici un exeple prenant uniquement un NO=1

NO DT_EFF_SCT DT_EFF_TX
1 01/01/1960 16/12/2011
1 03/02/1962 15/12/2010

la table que j'attens est la suite

NO DT_EFF_SCT DT_EFF_TX
1 01/01/1960 02/02/1962
1 03/02/1962 31/12/9999

comme vous povez le voir
le premiere obsevation de DT_EFF_TX=(03/12/1962-1)=02/12/1962
la deuxième obs de DT_EFF_TX=31/12/9999

cordialement
m.brahim 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 06h36.


 
 
 
 
Partenaires

Hébergement Web