Рассмотрим условное агрегирование в SQL, предполагая, что ваши типы представляют собой несколько элементов:
proc sql;
create table output as
select ID, NAME,
MAX(case when TYPE = 'name' then STRING_VALUE else "" end) AS report_name,
MAX(case when TYPE = 'report_date' then DATE_VALUE else . end) AS report_date format=date9.,
MAX(case when TYPE = 'code' then NUMBER_VALUE else . end) AS code,
MAX(case when TYPE = 'sum' then NUMBER_VALUE else . end) AS sum
from raw
group ID, NAME;
quit;
Ввод
data raw;
infile datalines delimiter=',' DSD;
length NAME $ 7 TYPE $ 11 STRING_VALUE $11 NUMBER_VALUE 7;
input ID NAME $ TYPE $ STRING_VALUE $ NUMBER_VALUE DATE_VALUE date9.;
format DATE_VALUE DATE9.;
datalines;
1,revenue,report_date,,.,01jan2018
1,revenue,name,Revenue_12m,.,.
1,revenue,code,,1100,.
1,revenue,sum,,6000000,.
;
Выход
ID NAME report_name report_date code sum
1 revenue Revenue_12m 01JAN2018 1100 6000000