Maybe this could help you: data Mileage; input age $ sex $ amount; datalines; 65-up M 7199 65-up F 4502 55-64 M 12304 55-64 F 5428 45-54 M 15701 45-54 F 6915 35-44 M 17916 35-44 F 7653 ; run; data Mileage; set Mileage; new_label=age||sex; if amount lt 6000 then Color='green'; else if amount ge 6000 AND amount lt 10000 then Color='y'; else if amount ge 10000 AND amount lt 15000 then Color='o'; else if amount gt 15000 then Color='red'; run; proc sort data=Mileage nodupkey out=Sortset (keep=new_label Color); by new_label Color; run; data _null_; set Sortset end=last; by new_label Color; count+1; call symput('new_label'||left(put(count,5.)),trim(new_label)); call symput('color'||left(put(Color,5.)),trim(Color)); if last then call symput('num',put(count,5.)); run; pattern; %macro BarPattern; %do i=1 %to # pattern&i v=s color=&&Color&i; %end; %mend; %BarPattern; proc gchart data=Mileage; vbar new_label / sumvar=amount subgroup=new_label; run; quit; additional reading & http://support.sas.com/resources/papers/proceedings09/185-2009.pdf
... View more