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 11/10/2011, 15h32   #1
Invité régulier
 
Inscription : juin 2011
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 36
Points : 8
Points : 8
Par défaut Créer un enregistrement par année présente dans un intervalle définit par deux variables début et fin

J'ai une table avec, par id, une date de début et une date de fin (merci à s_a_m au passage ).

Il faudrait que je puisse créer une autre table avec, pour chaque id, un certain nombre de lignes correspondant aux années présentes dans l'intervalle.

Un petit exemple sera sans doute plus clair. Voici par exemple deux enregistrements de ma table originelle :

id début fin
1 05/06/2009 09/10/2011
2 31/12/2001 01/01/2002
...

... et je voudrais obtenir la table suivante :

id année
1 2009
1 2010
1 2011
2 2001
2 2002
...
Areis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 16h14   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 011
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 011
Points : 1 712
Points : 1 712
j'ai bricolé un truc vite fait. J'espère que ton ID est unique genre clé primaire.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
 
DATA test;
INFILE cards dlm='';
input id @3 dte1  ddmmyy10. @14 dte2  ddmmyy10.;
cards;
1 05/06/2009 09/10/2011
2 31/12/2001 01/01/2002
;
run;
 
DATA test1 (keep= id annee) ;
   SET test;
   *retain i dte1 dte2;
   *BY id;
   i=year(dte2)-year(dte1);
   do j=0 TO i;
   annee= year(dte1)+j;
   output;
   end;
run;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 16h26   #3
Invité régulier
 
Inscription : juin 2011
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 36
Points : 8
Points : 8
Déjà ?!?! Mais tu campes devant le forum toute la journée ?

Mon Id n'est pas unique mais je dois avoir une succession de variables qui rendent chaque enregistrement unique.

Je regarde ce que tu as proposé déjà ! Merci !
Areis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 16h56   #4
Invité régulier
 
Inscription : juin 2011
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 36
Points : 8
Points : 8
Impeccable ! C'est nickel, encore merci.
Areis 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 04h27.


 
 
 
 
Partenaires

Hébergement Web