Альтернативный подход заключается в сохранении диапазонов в таблице, а не встраивании их в запрос. В итоге вы получите таблицу, назовите ее Ranges, которая выглядит так:
LowerLimit UpperLimit Range
0 9 '0-9'
10 19 '10-19'
20 29 '20-29'
30 39 '30-39'
И запрос, который выглядит так:
Select
Range as [Score Range],
Count(*) as [Number of Occurences]
from
Ranges r inner join Scores s on s.Score between r.LowerLimit and r.UpperLimit
group by Range
Это означает настройку таблицы, но ее будет легко поддерживать при изменении желаемых диапазонов. Никаких изменений кода не требуется!