你不需要一个CASE
陈述。您可以按整数除法的结果进行分组。
SELECT 10 * ( marks / 10 ) AS start_range,
10 * ( marks / 10 ) + 9 AS end_range,
count(*) AS COUNT
FROM testTable
GROUP BY marks / 10
这将分组
0 - 9
10 - 19
/* ...*/
90 - 99
100 - 109
如果你不想100
要单独处于一个范围内(作为最终范围中唯一可能的值),您需要更清楚地定义要求。
包括all您可以使用的范围
SELECT CAST(10 * ( G.Grp ) AS VARCHAR(3)) + '-'
+ CAST(10 * ( G.Grp ) + 9 AS VARCHAR(3)) AS range,
count(T.id) AS Count
FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) G(Grp)
LEFT JOIN [dbo].[testTable] T
ON G.Grp = T.marks / 10
GROUP BY G.Grp
SQL小提琴