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 :

Transposition en SQL


Sujet :

SAS Base

  1. #1
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut Transposition en SQL
    Bonjour à tous,

    Je me casse la tête depuis ce matin, j'aimerais faire ça en SQL (pas de proc transpose ou merge) mais je n'y arrive pas.

    Merci d'avance de prendre un peu de votre temps.
    Images attachées Images attachées  

  2. #2
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Je te propose cette solution:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
     
     
    option mprint mlogic symbolgen;
    data test;
    input id type $ count;
    cards;
    111 gness 45
    111 brehat 90
    111 bt 90
    111 bat 90
    112 gness 45
    112 brehat 90
    112 bt 90
     
    ; run;
     
     
    proc sql;
    create table test as select * 
    from test order by id, type;
    quit;
     
     
    %macro tt;
     
    proc sql noprint; 
     
    select count(distinct id) into :n_id
    from test;
     
    select distinct id  into :col1 -:col%left(&n_id)
     
    from test;
     
    quit;
     
     
    %do i=1 %to &n_id;
         proc sql;
         create table test1&&col&i as
         select id ,type,count , monotonic() as nbr  from test
         where id=&&col&i ; 
     
         proc sql noprint; 
         select count(id) into:n_id_r from test1&&col&i;quit;
         proc sql;
     
         proc sql;
         select distinct (type)  into :type1 -:type%left(&n_id_r)
         from  test1&&col&i;
         quit;
     
         %do j=1 %to &n_id_r;
     
                proc sql;
                create table test_1_&j._&&col&i as
                select id , count as &&type&j. from test1&&col&i
                where nbr=&j.
                ;
     
        %end;
     
     %end;
     
    %mend;
     
    %tt;
     
    data fin ;
    merge test_1_:   ;
    by id;
    run;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  3. #3
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    Bonjour Brahim,

    Merci pour ta solution mais la difficulté est de faire ça tout en SQL dans une même requête.

    Merci quand même

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant Finance/Assurance
    Inscrit en
    Décembre 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Finance/Assurance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 198
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    Je ne sais pas si le sujet est toujours d'actualité mais voici une réponse possible.

    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
    16
    17
    18
    19
    20
    data test;
    input id type $ count;
    cards;
    111 gness 45
    111 brehat 90
    111 bt 90
    111 bat 90
    112 gness 45
    112 brehat 100
    112 bt 10
    ; run;
     
    Proc sql;
    create table test2 as
    select distinct a.id , (select count from test b where b.id = a.id and type = "gness") as gness ,
    					   (select count from test b where b.id = a.id and type = "brehat") as brehat ,
    					   (select count from test b where b.id = a.id and type = "bt") as bt, 
    					   (select count from test b where b.id = a.id and type = "bat") as bat
    from test a;
    quit;
    Elle sera utile si tu n'a pas beaucoup de modalités dans ta variable "Type", sinon ça risque d'être fastidieux à écrire !

    Flo00154

Discussions similaires

  1. Transposition de clones en SQL
    Par MEGAMIND2 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/09/2018, 06h25
  2. Transposition code VBA en SQL
    Par castours dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2011, 16h44
  3. Transposition de nom de maniere auto : .txt -> .sql
    Par cobra85 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 15/04/2009, 15h20
  4. Transposition avec SQL * Loader
    Par Medmidou dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 31/12/2007, 06h25

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