Very interesting question.
data tbf(index=(b));
input B $ C5 C6;
cards;
B24 16 15
B52 84 64
B62 35 86
B12 12 215
B13 74 56
;
run;
data info(index=(b));
input P $ B $ C $;
cards;
P1 B24 C5
P2 B52 C5
P3 B62 C5
P1 B12 C6
P2 B13 C6
;
run;
proc sql noprint;
select p into : vars separated by ' '
from (select distinct p from info)
order by input(compress(p,,'kd'),best32.);
quit;
%put &vars ;
data want;
merge tbf info;
by b;
array x{*} &vars ;
do i=1 to dim(x);
if upcase(vname(x{i}))=upcase(p) then do;x{i}=vvaluex(c);leave;end;
end;
drop i p c;
run;
... View more