Here's an updated and tested SQL code to get what you want: proc sql; select 'Enrolled' as Stat, put(sum(Enrolled='Y' AND Group='group1'),8.) as Group1 'Group 1', put(sum(Enrolled='Y' AND Group='group2'),8.) as Group1 'Group 2' from Test union select 'Finished' as Stat, cats( sum(Finished='Y' AND Group='group1'),' (',sum(Finished='Y' AND Group='group1')/sum(Group='group1')*100,'%)' ), cats( sum(Finished='Y' AND Group='group2'),' (',sum(Finished='Y' AND Group='group2')/sum(Group='group2')*100,'%)' ) from Test union select 'Gender=M' as Stat, cats( sum(Gender='M' AND Group='group1'),' (',sum(Gender='M' AND Group='group1')/sum(Group='group1')*100,'%)' ), cats( sum(Gender='M' AND Group='group2'),' (',sum(Gender='M' AND Group='group2')/sum(Group='group2')*100,'%)' ) from Test union select 'Gender=F' as Stat, cats( sum(Gender='F' AND Group='group1'),' (',sum(Gender='F' AND Group='group1')/sum(Group='group1')*100,'%)' ), cats( sum(Gender='F' AND Group='group2'),' (',sum(Gender='F' AND Group='group2')/sum(Group='group2')*100,'%)' ) from Test ; quit;
... View more