Have you considered using formats, something along these lines:
data have;
input val;
cards;
1
20.5
30.9
140.0
145.2
145.85
200
;
run;
proc format;
value intPart
low - 139.99 = 'Low '
140 - 149.99 = 'Want'
150 - high = 'High'
;
run;
proc format;
value decPart
low - 0.79 = 'Low '
0.8 - 0.89 = 'Want'
0.9 - high = 'High'
;
run;
data want;
set have;
intRange = put(val, intPart.);
decRange = put(val - int(val), decPart.);
run;
proc sql;
create table summary
as
select intRange, decRange, count(val) as count
from want
group by 1,2
;
quit;