Hello, Another solution: proc sql noprint; select distinct cat('_' ,substr(date,1,2),substr(date,4,3)) into :datevar separated by ' ' from have ; select distinct cat('max(_' ,substr(date,1,2),substr(date,4,3),') as _',substr(date,1,2),substr(date,4,3)) into :datevarsql separated by ',' from have ; quit; %put &datevar &datevarsql; data int1; retain compint ; array trdata{*} $ &datevar; set have; if notdigit(strip(field1)) then compint=field1; else do; financial_data=field2; company=compint; do i=1 to &sqlobs ; if (vname(trdata{i})=cat('_' ,substr(date,1,2),substr(date,4,3))) then trdata{i}= field1; end; output; end; drop compint field1 field2 date i; run; proc sql noprint; create table want as select company,financial_Data, &datevarsql from int1 group by company,financial_Data; quit;
... View more