As pointed out , You need to take care what you are going to do when there were multiple obs in a BY group .
data have ;
input yearmonth areacode $ barcode $ tot_qty tot_value ;
cards;
201402 AR01 1101 67 123
201402 AR01 1201 67 123
201402 AR01 1301 67 123
201402 AR01 1401 67 123
201402 AR01 1501 67 123
201402 AR01 1601 67 123
201402 AR01 1701 67 123
201403 AR01 1101 67 123
201403 AR01 1201 67 123
201403 AR01 1301 67 123
201403 AR01 1401 67 123
201403 AR01 1501 67 123
201403 AR01 1601 67 123
201403 AR01 1701 67 123
;;;;
run;
proc sql;
select distinct catt('have(where=(areacode="',areacode,'" and barcode="',barcode,'" and yearmonth=',yearmonth,') rename=(tot_qty=tot_qty_',yearmonth,' tot_value=tot_value_',yearmonth,'))') into : list separated by ' '
from have;
quit;
data want;
merge &list;
by areacode barcode;
drop yearmonth;
run;
Xia Keshan
Message was edited by: xia keshan