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 30/07/2011, 18h33   #1
Membre éclairé
 
Homme
statisticien
Inscription : mai 2011
Messages : 212
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : statisticien
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2011
Messages : 212
Points : 319
Points : 319
Par défaut Sélectionner la date de dernière mises à jour d'une variable

Bonjour

J'ai une table composé d'une variable date (time) , une variable identifiant (id) et d'autres variables.

Je souhaiterais sélectionner pour chaque individus (id) la ligne correspondant à la dernière mise à jour.

En étape data cela ne me pose aucun problèmes cela se traduirait par le code suivant

Code :
1
2
3
4
5
6
 
 
proc sort DATA=MaTable; BY id time;run;
 
DATA MaSelection; SET MaTable; BY id;
IF last.id;run;
Je voudrais faire la même chose mais avec la proc SQL , et je sèche...
jerome_pdv2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2011, 18h45   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Bonjour Jérôme.
La requête en SQL est quelque chose comme
Code :
1
2
3
4
5
SELECT *, MAX(time) AS derniereMaj
FROM maTable
GROUP BY id
HAVING time = derniereMaj
;
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2011, 18h59   #3
Membre éclairé
 
Homme
statisticien
Inscription : mai 2011
Messages : 212
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : statisticien
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2011
Messages : 212
Points : 319
Points : 319
Bonjour Olivier

et merci !

C'est parfait.

voici le code final donc

Code :
1
2
3
4
5
6
7
8
 
proc sql;
CREATE TABLE MaSelection
AS SELECT *, MAX(time) AS derniereMaj
FROM MaTable
GROUP BY id
HAVING time = derniereMaj
;quit;
jerome_pdv2 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 13h34.


 
 
 
 
Partenaires

Hébergement Web