Pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter, inscrivez-vous gratuitement !

 

Discussion: transposition en SQL

  1. #1
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    janvier 2011
    Messages
    1 015
    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 015
    Points : 1 487
    Points
    1 487

    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
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : juillet 2011
    Messages : 387
    Points : 977
    Points
    977
    Billets dans le blog
    11

    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 015
    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 015
    Points : 1 487
    Points
    1 487

    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
    191
    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 : 191
    Points : 627
    Points
    627

    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 code VBA en SQL
    Par castours dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2011, 16h44
  2. 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
  3. Transposition avec SQL * Loader
    Par Medmidou dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 31/12/2007, 06h25
  4. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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