It looks like you are trying to get the variables all onto the same dataset, so I would alter your code this way, which will create a single dataset having withdrawals_1-withdrawals_4: %macro sqlloop; proc sql; create table test as select *, SUM(case WHEN time_on_books in (11,12,13) THEN BAL_THISMTH END) as Withdrawals_1 %do n=2 %to 4; , SUM(case WHEN time_on_books = (12*(&n-1))+11 or time_on_books = (12*(&n-1))+12 or time_on_books = (12*(&n-1))+13 THEN BAL_THISMTH END) as withdrawals_&n %end; FROM IS_tb1; quit; %mend; %sqlloop
... View more