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
    Points : 1
    Points
    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
    Points : 3 403
    Points
    3 403
    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.

Discussions similaires

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

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