您不需要
CASE声明。您可以按整数除法的结果分组。
SELECt 10 * ( marks / 10 ) AS start_range, 10 * ( marks / 10 ) + 9 AS end_range, count(*) AS COUNTFROM testTableGROUP BY marks / 10
这将分组
0 - 910 - 1990 - 99100 - 109
如果您不希望
100自己位于某个范围内(作为最终范围内唯一可能的值),则需要更明确地定义需求。
要包括 所有 可以使用的范围
SELECt CAST(10 * ( G.Grp ) AS VARCHAr(3)) + '-' + CAST(10 * ( G.Grp ) + 9 AS VARCHAr(3)) AS range, count(T.id) AS CountFROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) G(Grp) LEFT JOIN [dbo].[testTable] T ON G.Grp = T.marks / 10GROUP BY G.Grp
SQL小提琴



