Discussion: Ajout de colonnes

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 73
    Points : 41
    Points
    41

    Par défaut Ajout de colonnes

    Bonjour,
    J'ai plusieurs tables dont je veux faire l'union
    Mais auparavant, je voudrais ajouter une colonne (ord) dans chacune des tables : dans la 1re colonne de la la tab1, il y aura le chiffre 1, dans la 1re colonne de la la tab2, il y aura le chiffre 2, etc...
    Nouveau dans SAS, j'ai utilisé le SQL d'Access...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create table tab1 as select 1 as ord, var1, var2  var3...
    from tab1 
    create table tab2 as select  2 as ord, var1, var2  sum(var3) ...
    from tab2 group by ...
    ...
    create table tab11 as select  11 as ord, var1, var2  sum(var3) ...
    from tab11 group by ...
    Jusqu'à la tab6 tout était OK, mais à partir de la tab7 le regroupement ne se faisait plus ? A noter que les chiffres dans 1 as ord se mettent en couleur verte... donc je n'ai pas compris ce que signifie pour SAS create table tab1 as select 1 as ord,

    J'ai laissé tomber cette solution et j'ai ajouté une colonne par alter table (puis update) mais le problème c'est que la colonne se met à la fin et non pas au début comme je le voudrais.
    Merci de vos avis

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 73
    Points : 41
    Points
    41

    Par défaut

    Citation Envoyé par eric232 Voir le message
    Bonjour,
    Je constate que mon code n'est pas clair, je précise : je crée 11 table qui ont la même structure et souhaite les réunir
    Mais auparavant, je voudrais ajouter une colonne (ord) dans chacune des tables : dans la 1re colonne de la la tab1, il y aura le chiffre 1, dans la 1re colonne de la la tab2, il y aura le chiffre 2, etc...
    Nouveau dans SAS, j'ai utilisé le SQL d'Access...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create table tab1 as select 1 as ord, var1, var2,  var3...
    from tab1 ;
     
    create table tab2 as select  2 as ord, "" as var1, var2, ""' as var3 ... sum(varx) 
    from tab2 group by var2;
     
    create table tab3 as select  2 as ord, "" as var1, "" as var2, var3 ... sum(varx)  
    from tab3 group by var3;
    ...
    /*total*/
    create table tab11 as select  11 as ord, "" var1, "" var2, , ""' as var3, "" as   ...sum(varx) 
    from tab11 group by var11;
    Jusqu'à la tab6 tout était OK, mais à partir de la tab7 le regroupement ne se faisait plus ? A noter que les chiffres dans 1 as ord se mettent en couleur verte... donc je n'ai pas compris ce que signifie pour SAS create table tab1 as select 1 as ord,

    J'ai laissé tomber cette solution et j'ai ajouté une colonne par alter table (puis update) mais le problème c'est que la colonne se met à la fin et non pas au début comme je le voudrais.
    Merci de vos avis

  3. #3
    Membre expert
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    avril 2008
    Messages
    1 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : avril 2008
    Messages : 1 752
    Points : 3 884
    Points
    3 884

    Par défaut

    Bonjour.
    Si tu fais ton union dans une étape Data et non en SQL, avec l'instruction SET, tu peux récupérer à chaque observation le nom de la table dont elle provient. Ensuite un peu de magie avec la fonction COMPRESS (KD=Keep Digits) pour ne garder que les nombres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DATA union ;
      SET t1 t2 t3 INDSNAME=source ;
      ord = INPUT(COMPRESS(source,,"KD"),2.) ;
    RUN ;
    Bon courage.
    Olivier

    Merci de ne m'envoyer des MP que pour les questions personnelles. Pour toute question posée sur le forum, m'envoyer un MP ne fera pas venir de réponse plus rapidement.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 73
    Points : 41
    Points
    41

    Par défaut

    Citation Envoyé par olivier.decourt Voir le message
    Bonjour.
    Si tu fais ton union dans une étape Data et non en SQL, avec l'instruction SET, tu peux récupérer à chaque observation le nom de la table dont elle provient. Ensuite un peu de magie avec la fonction COMPRESS (KD=Keep Digits) pour ne garder que les nombres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DATA union ;
      SET t1 t2 t3 INDSNAME=source ;
      ord = INPUT(COMPRESS(source,,"KD"),2.) ;
    RUN ;
    Bonjour Olivier,
    Absent du bureau durant le week-end
    Table WORK.TAB11_16 created, with 403 rows and 77 columns.
    Table WORK.TAB11_16GRPNIV created, with 126 rows and 77 columns.

    Voici ce que j'obtiens :
    There were 403 observations read from the data set WORK.TAB11_16.
    There were 126 observations read from the data set WORK.TAB11_16GRPNIV.
    NOTE: There were 126 observations read from the data set WORK.TAB11_16GRPNIV.
    NOTE: The data set WORK.UNION has 529 observations and 141 variables

    Je devrais avoir 77 colonnes... de plus, dans la colonne ord, il n'y a que des "11", au lieu de "1" et "2"

Discussions similaires

  1. [JTable] ajouter une colonne de checkbox
    Par nawel dans le forum Tables
    Réponses: 3
    Dernier message: 04/05/2005, 14h07
  2. [ADO.Net][VB.NET] Comment ajouter une colonne Integer à un DataTable ?
    Par graphicsxp dans le forum Accès aux données
    Réponses: 2
    Dernier message: 20/04/2005, 12h08
  3. [C#] Ajout de colonne dans un DataGrid
    Par pc152 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/09/2004, 17h17
  4. ajout de colonnes sur une selection
    Par DaxTaz dans le forum MS SQL-Server
    Réponses: 4
    Dernier message: 05/08/2004, 17h44

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