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

Macro Discussion :

Macro qui vérifie qu'une valeur est dans une table


Sujet :

Macro

  1. #1
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut Macro qui vérifie qu'une valeur est dans une table
    Bonjour,
    La macro suivante vérifie la présence d'une valeur dans une table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %macro FoundInTable(MyTable, MyVar, MyValue);
    	%global NbOcc;
    	/* Recherche d'une occurence &MyValue dans &MyTableRef pour la variable &MyVar */
    	proc sql noprint;
    		SELECT COUNT(1) INTO :NbOcc FROM &MyTable WHERE &MyVar=&MyValue;
    	quit;
    %mend;
    Ca fonctionne bien mais si MyVar et MyValue ne sont pas même type l'exécution produit une erreur.

    J'aimerais si c'était possible, éviter d'avoir 3 macros : Une pour le numérique, une pour l'alphanumérique et une pour les dates.

    Je cherche une fonction de conversion vers du format alphanumérique, sans connaître, a priori le format d'entrée.

    Une telle fonction existe-t-elle en sas ?

    Merci

    S'il faut la développer, je préfère utiliser mes 3 macros.

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    plutôt que trois macros à développer, il faut décomposer ton problème par rapport à ta question.

    Le temps de développement est de 10 minutes et le temps d'exécution instantané. Après c'est toi de choisir.

    1. Myvar est à rechercher dans la table pour déterminer son type ? =>

    proc contents data=MyTable noprint out=cnt (keep=name type where=(name=&MyVar));
    run;

    Selon le type retrouvé (1, 2) alors orienter le second traitement selon cette valeur.

    2a. si le type est num alors mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    proc sql noprint;
    SELECT COUNT(distinct &MyVar) INTO :NbOcc FROM &MyTable WHERE &MyVar=&MyValue;
    quit;
    2b. si le type est char alors mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    proc sql noprint;
    SELECT COUNT(distinct &MyVar) INTO :NbOcc FROM &MyTable WHERE &MyVar="&MyValue";
    quit;

    Ca te va un truc comme ça ?

    Stéphane.

  3. #3
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Merci beaucoup Datametric,
    ça me va très bien.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/04/2011, 08h06
  2. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  3. [AC-2007] Savoir si une valeur est dans une zone de liste
    Par vincent1746 dans le forum IHM
    Réponses: 2
    Dernier message: 16/07/2010, 16h07
  4. [DATA] Vérifier si une valeur est dans une table sans PROC SQL
    Par Filippo dans le forum SAS Base
    Réponses: 5
    Dernier message: 02/12/2009, 11h05
  5. savoir si une valeur est dans une table
    Par pedro99 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/06/2008, 09h44

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