日期:2014-05-18  浏览次数:20559 次

查询问题!年龄段查询!!!!!!!!!!!!!!!!!!
有一张表,里面有一个字段是表示的年龄,是数值型的
现在需要统计
0-20,21-40,41-60,61-70,70以上的记录数

统计结果如下:
0-20       5
21-40     1
41-60     11
....
70以上     4

怎样实现?求问大侠

------解决方案--------------------
Select '0-20 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 Between 0 And 20
Union
Select '21-40 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 Between 21 And 40
Union
Select '41-60 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 Between 41 And 60
Union
Select '61-70 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 Between 61 And 70
Union
Select '70以上 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 > 70
------解决方案--------------------
这样行吗?
select 年龄段,Count(年龄段) as 记录数
from
(
select (case when 年龄 > =0 and 年龄 <=20 then '0-20 ' when 年龄 > =21 and 年龄 <=40 then '41-40 '
when 年龄 > =41 and 年龄 <=60 then '41-60 ' when 年龄 > =61 and 年龄 <=70 then '61-70 ' when 年龄 > =71 then '70以上 ' end )as 年龄段
from 表
)a
group by 年龄段

------解决方案--------------------
如果年龄是整数最小年龄为1
select case when (年龄-1)/10=6 then '61-70 ' when (年龄-1)/10> 6 then '70以上 ' else rtrim(((年龄-1)/20)*20+1)+ '- '+rtrim(((年龄-1)/20+1)*20) end,count(*) from 年龄表
group by case when (年龄-1)/10=6 then '61-70 ' when (年龄-1)/10> 6 then '70以上 ' else rtrim(((年龄-1)/20)*20+1)+ '- '+rtrim(((年龄-1)/20+1)*20) end