This can be done easily using a crosstab query, but you probably just need a simple query with a "spreader" feature.
Assuming your original table looked like this:
Code:
tblTerminals
TermID,
CityName,
TerminalName
query1:
SELECT
Cityname,
Count(TerminalName) As TermCount
FROM
tblTerminals
GROUP BY CityName;
Then your spreader takes the results of that query and spreads it by size category:
Code:
SELECT
CityName,
IIF(TermCount>0 AND TermCount <= 5, TermCount,0) As TermCount0105,
IIF(TermCount>5 AND TermCount <= 10, TermCount,0) As TermCount0610,
IIF(TermCount>0 AND TermCount <= 15, TermCount,0) As TermCount1115,
IIF(TermCount>0 AND TermCount <= 20, TermCount,0) As TermCount1620,
IIF(TermCount>20, TermCount,0) As TermCount2199,
FROM
(SELECT
Cityname,
Count(TerminalName) As TermCount
FROM tblTerminals
GROUP BY CityName);
That's easy enough, right?