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.
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.
Bonjour,
Je te propose cette solution:
Cordialement
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;
Certification des Talents de la programmation In Memory Statistics sur HADOOP:
http://talents-imstat.groupe-avisia....avance?uid=162
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
Bonjour,
Je ne sais pas si le sujet est toujours d'actualité mais voici une réponse possible.
Elle sera utile si tu n'a pas beaucoup de modalités dans ta variable "Type", sinon ça risque d'être fastidieux à écrire !
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;
Flo00154
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager