查询问题!年龄段查询!!!!!!!!!!!!!!!!!!

yuesongboy 2007-05-07 02:10:31
有一张表,里面有一个字段是表示的年龄,是数值型的
现在需要统计
0-20,21-40,41-60,61-70,70以上的记录数

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

怎样实现?求问大侠
...全文
599 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
PASSIONYQZ2 2008-11-02
  • 打赏
  • 举报
回复
老兄和我想的 一样.可是 当这个段的人数为空这么办..
SELECT (case
when datediff(year,CSRQ,GETdATE())<=35 then 'A'
WHEN datediff(year,CSRQ,GETdATE())BETWEEN 36 AND 40 THEN 'B'
WHEN datediff(year,CSRQ,GETdATE())BETWEEN 41 AND 46 THEN 'C'
WHEN datediff(year,CSRQ,GETdATE())BETWEEN 47 AND 50 THEN 'D'
WHEN datediff(year,CSRQ,GETdATE())BETWEEN 51 AND 55 THEN 'E'
ELSE 'F'
END) AL,

COUNT(CSRQ) CT
FROM RH_TABLE
GROUP BY
(case
when datediff(year,CSRQ,GETdATE())<=35 then 'A'
WHEN datediff(year,CSRQ,GETdATE())BETWEEN 36 AND 40 THEN 'B'
WHEN datediff(year,CSRQ,GETdATE())BETWEEN 41 AND 46 THEN 'C'
WHEN datediff(year,CSRQ,GETdATE())BETWEEN 47 AND 50 THEN 'D'
WHEN datediff(year,CSRQ,GETdATE())BETWEEN 51 AND 55 THEN 'E'
ELSE 'F'
END)
suifix 2007-05-13
  • 打赏
  • 举报
回复
用paoluo(一天到晚游泳的鱼) \lwl0606(寒泉) 的跟踪一下查询分析,看看哪个效果好就用那个啊
wgzaaa 2007-05-13
  • 打赏
  • 举报
回复
如果年龄是整数最小年龄为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
lwl0606 2007-05-07
  • 打赏
  • 举报
回复
这样行吗?
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 年龄段
shuai45 2007-05-07
  • 打赏
  • 举报
回复
上面这种方法不错
您所说的更好的指的是什么。
你的意思是不是写一循环什么的
yuesongboy 2007-05-07
  • 打赏
  • 举报
回复
有没有其它方法?
paoluo 2007-05-07
  • 打赏
  • 举报
回复
yuesongboy(温柔一刀) ( ) 信誉:100 Blog 加为好友 2007-05-07 14:11:14 得分: 0


并且第一个字段要显示“0-20,21-40,41-60,61-70,70以上”
需要创建临时表吗?


------
不需要創建臨時表,一個查詢即可。
paoluo 2007-05-07
  • 打赏
  • 举报
回复
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
yuesongboy 2007-05-07
  • 打赏
  • 举报
回复
并且第一个字段要显示“0-20,21-40,41-60,61-70,70以上”
需要创建临时表吗?

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧