• This is another way to do it assuming you have a table of ranges and descriptions of ranges.

    First example displays the ranges.  Second example displays range names.

    SELECT     dbo.MyRanges.LowValue, dbo.MyRanges.HighValue, COUNT(*) AS Expr1

    FROM         dbo.MyRanges CROSS JOIN

                          dbo.MyData

    WHERE     (dbo.myData.Valuefield BETWEEN dbo.MyRanges.LowValue AND

                          dbo.MyRanges.HighValue)

    GROUP BY dbo.MyRanges.LowValue, dbo.MyRanges.HighValue

    SELECT     COUNT(*) AS Expr1, dbo.MyRanges.RangeName

    FROM         dbo.MyRanges CROSS JOIN

                          dbo.MyData

    WHERE      AND (dbo.MyData.ValueField BETWEEN dbo.MyRanges.LowValue AND

                          dbo.MyRanges.HighValue)

    GROUP BY dbo.MyRanges.LowValue, dbo.MyRanges.HighValue, dbo.MyRanges.RangeName