Hello SAS Experts, I have a long and thin dataset of month end balances for each account which I am trying to shift to short and wide using the code below. accountnumber balmthend MonthYYYYMM_date 1 10 Jan-17 1 5 Feb-17 1 3 Mar-17 2 20 Jan-17 2 30 Feb-17 2 10 Mar-17 2 5 Apr-17 However, if I set max_months as any value over 255 SAS doesn't like it as it breaches the SQL limit I think. Do you know of a way I can adapt the code below and perhaps play around with a do loop? Any help would be greatly appreciated. Thanks, Pete %let rep_mth=01Jan2017; *Reporting month; %let max_months=300; *Set to allow max required months remaining in account lifetimes; %let fee=35; *Create dataset with single row per acc at desired obs month (Jan17); %macro ead_vector; proc sql; create table ead_&rep_mth as select %do i = 1 %to &max_months; b&i..BalMthEnd as BalMthEnd_&i, %end; a.* from prep2_&rep_mth(where=(MonthYYYYMM_date="&rep_mth."d)) as a %do i = 1 %to &max_months; left join prep2_&rep_mth(where=(MonthYYYYMM_date=intnx('month',"&rep_mth."d,&i,'b'))) as b&i on a.accountnumber = b&i..accountnumber %end; ; quit; %mend; %ead_vector;
... View more