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 :

Fusion "conditionnelle" de 2 tables


Sujet :

SAS Base

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Par défaut Fusion "conditionnelle" de 2 tables
    Bonjour,

    Je rencontre une difficulté qui m'empêche d'avancer sur mon projet. Pouvez-vous m'aider ?


    1-Contexte :
    - Je dispose de deux bases à fusionner. L'une est ma base de travail (nommée
    Contacts) et une complémentaire (nommée Agence).
    - Dans BaseContact, il y a des numéro de téléphone(TelAppele). Dans Agence, il ne s'agit que de préfixe de numéro de téléphone (Pref). Ceux-ci vont de 3 à 6 caractères.
    - Le problème est qu'il s'agit là des variables de jointure.



    2-Ce que j'ai fait :
    - Il faudrait donc réaliser une jointure "conditionnelle". J'ai donc pris l'exemple
    d'une longueur de 3 caractères, avant d'essayer de compiler toutes les longueurs de caractères par macro-programme.



    3-Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROC SQL;
            CREATE TABLE ContactsAgence_&mois._&annee.
            SELECT *
            FROM ARCEP_130211, (
                    SELECT *
                    FROM Contacts_&mois._&annee.
                    ) AS Contacts_3
            WHERE substr(TelAppele,2,3) = Pref
            ;
    QUIT;

    4-Erreur - Affichage de la LOG :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    PROC SQL;
      CREATE TABLE ContactsAgence_&mois._&annee.
      SELECT *
      ______
      73
    ERROR 73-322: AS requis.
      FROM ARCEP_130211, (
          SELECT *
          FROM BaseContacts_&mois._&annee.
          ) AS Contacts_3
      WHERE substr(TelAppele,2,3) = Pref
      ;
    NOTE: PROC SQL a défini l'option NOEXEC et va continuer à contrôler la syntaxe des instructions.
    QUIT;

    Que me conseillez-vous de faire ? Merci d'avance pour vos conseils.

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    Hello,
    Il te dit tout simplement qu'il manquait un as devant le select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    PROC SQL;
            CREATE TABLE ContactsAgence_&mois._&annee.
           AS SELECT *
    ....
    Par contre , t'es entrain de faire un produit cartisien !!!! C'est ce que tu veux vraiment faire ?

    Moi je vois quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    PROC SQL;
            CREATE TABLE ContactsAgence_&mois._&annee.
            SELECT a.var1, a.var2,... b.varr1, b.varr2,...
            FROM ARCEP_130211 as a 
            inner /* left, right,...*/ join
            Contacts_&mois._&annee. as b 
            on substr(a.TelAppele,2,3) = b.Pref        ;
    QUIT;
    Après il faut voir par rapport à ta clé de jointure ....Sinon donne nous un exemple de données et le résultat souhaiter afin de bien comprendre ton besoin.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/09/2009, 10h00

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