IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Récupérer les observations d'une variable dans une seule macro-variable


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Récupérer les observations d'une variable dans une seule macro-variable
    Bonjour,

    J'ai une table SAS avec les données suivantes :

    Var1
    Paul
    Pierre
    Marc

    Je voudrais récuper ces 3 observations dans une seule macro-variable, c'est à dire l'équivalent de :

    %let="Paul" "Pierre" "Marc";

    mais réalisé de manière automatisée

    Merci de votre aide !

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Septembre 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Dataminer
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 29
    Points : 38
    Points
    38
    Par défaut
    Salut Polmart,

    La lien suivant pourra t'aider :

    https://support.sas.com/documentatio...a001360983.htm

    N'hésite pas si tu as encore des questions

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Merci, j'ai galéré (surtout avec l'histoire des guillemets) mais j'y suis arrivé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    data table;
    set table;
    var2=cats("'",var1,"'");
    run;
     
    proc sql noprint;
       select var2
          into :var1 separated by " " 
          from table;
    quit;
     
    %put &var1;
    Après je n'ai plus qu'à utiliser &var1 comme je veux, toutes mes observations sont bien stockées dans une seule macro-variable.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 133
    Points : 371
    Points
    371
    Par défaut
    plus rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    data toto;
    input Var1 $;
    cards;
    Paul
    Pierre
    Marc
    ;
     
    proc sql noprint ;
       select var1 format=$quote25. into :liste separated by ' ' from toto;
    quit;
    il ne faut pas hésiter à se servir des FORMAT....

    cordialement

    Sébastien Ringuedé

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Ah merci beaucoup ! Je ne connaissais pas le coup du format dans sql !

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'aimerai rebondir sur cette discussion.

    Je ne connaissais pas cette astuce pour stocker des sorties.

    Mais si on veut par exemple prendre une table qui aura pour condition les noms appartenant a cette variable, est ce possible ?

    J'ai essayé un WHERE BASE_NOM in &Var1 mais ça ne marchais pas. Je pensais que &Var1 était une liste et que ça aurai pu marcher.

    Merci,

  7. #7
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    Il faut mettre des parenthèses dans ta clause where.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE BASE_NOM in (&Var1)

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par mohamed_ Voir le message
    Bonjour,

    Il faut mettre des parenthèses dans ta clause where.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE BASE_NOM in (&Var1)
    Merci Mohamed pour ton retour,

    J'ai essayé mais j'ai toujours un message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    PROC SQL;
     CREATE TABLE WORK.Base_Perimetre AS SELECT DISTINCT 
     
    	 CC0_TREF_PERIMETRE_JOUR.SIREN
     
     FROM OCC_REF.CC0_TREF_PERIMETRE_JOUR AS CC0_TREF_PERIMETRE_JOUR
     
     WHERE CC0_TREF_PERIMETRE_JOUR.NOM_GROUPE = "STAT MARINE" ;
     
    QUIT;
     
    proc sql noprint ;
       select SIREN format=$quote25. into :liste separated by ' ' from WORK.Base_Perimetre;
    quit;
     
    %put &SIREN;
     
    PROC SQL;
     CREATE TABLE WORK.TEST AS SELECT 
         BASE_COTIS1.ID_ENTREPRISE,
    	 BASE_COTIS1.SIREN,
    	 BASE_COTIS1.CONTRAT,
    	 BASE_COTIS1.AA_ASSURANCE,
    	 BASE_COTIS1.COLLEGE,
    	 BASE_COTIS1.IND_ANI,
    	 BASE_COTIS1.ASSUREUR,
    	 BASE_COTIS1.CRISQ2,
    	 BASE_COTIS1.CRISQ3,
    	 BASE_COTIS1.CDR_IND_CTR_RESP,
    	 BASE_COTIS1.CDR_LIB_TYPE_GAR,
    	 BASE_COTIS1.CDR_NIV_GAR_DET,
    	 BASE_COTIS1.T1_MT_BRUT,
    	 BASE_COTIS1.T2_MT_BRUT,
    	 BASE_COTIS1.T3_MT_BRUT,
    	 BASE_COTIS1.T4_MT_BRUT,
    	 BASE_COTIS1.T5_MT_BRUT 
     FROM WORK.BASE_COTIS1 AS BASE_COTIS1
     
     WHERE BASE_COTIS1.SIREN in (&SIREN) ;
     
    QUIT;
    Message d'erreur : "Syntax error, expecting one of the following: a quoted string, a numeric constant, a datetime constant,
    a missing value, (, -, SELECT. "

    Merci beaucoup pour ton aide,

  9. #9
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour amelhay,

    Ta variable siren est numérique ou caractère ?

    Si elle est numérique ça ne marchera pas et tu devras retirer le format Et puis fais plutôt un .


    PS : Tu travailles à l'ACOSS ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo