Try this option -
Query:
SET NOCOUNT ON; DECLARE @tblJobs TABLE ( RecordID INT , DaysSinceStart INT , Code CHAR(1) ) INSERT INTO @tblJobs (RecordID, DaysSinceStart, Code) VALUES (158987, 11, 'A'), (158968, 3, 'A'), (158972, 4, 'C'), (158973, 16, 'B'), (158974, 23, 'C'), (158975, 13, 'B'), (158976, 45, 'A'), (158977, 32, 'C'), (158985, 9, 'C'), (158981, 25, 'B'), (158982, 47, 'A'), (158983, 18, 'A'), (158978, 5, 'C'), (158979, 27, 'B') SELECT * FROM ( SELECT t.Code , [Range] = CASE WHEN DaysSinceStart BETWEEN 0 AND 9 THEN '0-9' WHEN DaysSinceStart BETWEEN 10 AND 19 THEN '10-19' WHEN DaysSinceStart BETWEEN 20 AND 29 THEN '20-29' WHEN DaysSinceStart BETWEEN 30 AND 39 THEN '30-39' WHEN DaysSinceStart BETWEEN 40 AND 49 THEN '40-49' WHEN DaysSinceStart BETWEEN 50 AND 59 THEN '50-59' WHEN DaysSinceStart BETWEEN 60 AND 69 THEN '60-69' WHEN DaysSinceStart BETWEEN 70 AND 79 THEN '70-79' WHEN DaysSinceStart BETWEEN 80 AND 89 THEN '80-89' WHEN DaysSinceStart BETWEEN 90 AND 99 THEN '90-99' ELSE 'Over 100' END FROM @tblJobs t ) o PIVOT ( COUNT(o.[Range]) FOR [Range] IN ( [0-9], [10-19], [20-29], [30-39], [40-49], [50-59], [60-69], [70-79], [80-89], [90-99], [Over 100] ) ) pt
Output:
Code 0-9 10-19 20-29 30-39 40-49 50-59 60-69 70-79 80-89 90-99 Over 100