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 :

Obtenir des identifiants identiques sur deux bases selon des critères


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Obtenir des identifiants identiques sur deux bases selon des critères
    Bonjour à tous et à toutes!

    J'ai besoin d'un coup de pouce.

    J'ai deux bases de données qui ont exactement les mêmes variables: conso_2010 et conso_2011. Les tables contiennent des profils. conso_2011 en contient davantage que conso_2010. Je dois donner des numéros de profil sachant qu'il y a des profils identiques dans conso_2010 et conso_2011 c'est à dire que les six variables permettant de déterminer le type profil contiennent les mêmes données (par exemple mariage=OUI, enfant=NON etc..).

    J'ai pensé à prendre la table conso_2011 comme référence car elle contient plus de profils que conso_2010. Chaque ligne de conso_2011 correspond à un profil. J'ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data conso_2011; 
    set conso_2011; 
    numero_profil=_N_; 
    run;
    Comment obtenir dans la table conso_2010 les numéros de profils correspondant à ceux de la table conso_2011 lorsqu'il s'agit du même profil?
    Le faire à la main serait trop fastidieux car il y a beaucoup de lignes!

    Je vous remercie par avance de votre aide.

    Cordialement

  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
    Si tu fusionnais les champs tu aurais une clef identifiant unique

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Comment ça fusionner les champs ? Je n'ai pas bien compris..

  4. #4
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Bonjour

    six variables permettant de déterminer le type profil contiennent les mêmes données
    Par exemple
    identifiant=V1!!V2!!V3!!V4!!V5!!V6;où V1 à V6 sont tes 6 variables de profil

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci !

    Mais cela m'a donné la variable identifiant sous forme du nom de mes variables de profil concaténées. Comment puis-je donner un numéro ? Car j'ai une macro à faire tourner et elle tourne avec un numéro de profil.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Quel est le code de cette macro ?

    Un truc n'est pas clair depuis le début, tes profils sont ils uniques ? (c'est à dire que la même clé est bien unique dans chaque fichier).

    Si tes profils sont uniques, je pense qu'une méthode générale serait de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DATA CONSO_2011;SET CONSO_2011;num=_n_;id=V1!!V2!!V3!!V4!!V5!!V6;run;
    DATA CONSO_2010;SET CONSO_2010;id=V1!!V2!!V3!!V4!!V5!!V6;run;
     
    PROC SQL;
    CREATE TABLE CONSO_2010
    AS SELECT TAB1.*,TAB2.num
    FROM CONSO_2010 AS TAB1
    LEFT JOIN CONSO_2011 AS TAB2
    ON TAB1.id=TAB2.id;
    QUIT;
    ou même directement sans créér id
    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
     
    DATA CONSO_2011;SET CONSO_2011;num=_n_;RUN;
    PROC SQL;
    CREATE TABLE CONSO_2010
    AS SELECT TAB1.*,TAB2.num
    FROM CONSO_2010 AS TAB1
    LEFT JOIN CONSO_2011 AS TAB2
    ON 
    TAB1.V1=TAB2V1
    AND TAB1.V2=TAB2V2
    AND TAB1.V3=TAB2V3
    AND TAB1.V4=TAB2V4
    AND TAB1.V5=TAB2V5
    AND TAB1.V6=TAB2V6;
    QUIT;

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup !!!
    ça fonctionne!!
    Et merci pour la réactivité également !!

  8. #8
    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
    Bon ben voilà.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/06/2013, 13h03
  2. requete sur deux bases des donnés different
    Par matondo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/05/2009, 13h24
  3. Echange des données sur deux bases
    Par vlksoft dans le forum Modélisation
    Réponses: 7
    Dernier message: 29/12/2008, 09h03
  4. Select sur deux bases differentes
    Par Absolut Beauty dans le forum Langage SQL
    Réponses: 13
    Dernier message: 09/09/2005, 15h08
  5. Réponses: 3
    Dernier message: 11/07/2005, 15h20

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