declare @A table(id Int,age Int)
Insert @A Select 1, 12
Union All Select 2, 3
Union All Select 3, 21
Union All Select 4, 5
Union All Select 5, 15
Select s1=(case When age Between 1 And 10 Then '1- 10'
When age Between 11 And 20 Then '11- 20'
else '21- 30' end)
,count(1)
From @A
group by (case When age Between 1 And 10 Then '1- 10'
When age Between 11 And 20 Then '11- 20'
else '21- 30' end)
order by s1
declare @a int
set @a = 0
while @a<20
begin
insert into temp_a
select rtrim(10*@a) + '-' + rtrim(10*(@a+1)-1), count(*)
from employee
where age between (10*@a) and (10*(@a+1)-1)
select sum( case when age between 1 and 10 then 1 else 0 end ) as '1-10' ,
sum( case when age between 11 and 20 then 1 else 0 end ) as '11-20' ,
sum( case when age between 21 and 30 then 1 else 0 end ) as '21-30'
from a
Select
SUM(Case When age Between 1 And 10 Then 1 Else 0 End) As '1- 10',
SUM(Case When age Between 11 And 20 Then 1 Else 0 End) As '11- 20',
SUM(Case When age Between 21 And 30 Then 1 Else 0 End) As '21- 30'
From
A
------------------------------------------
支持鱼的代码。
8错。。
select tmp.年龄段, 人数=count(*)
from T
left join
(
select 年龄段='1-10', [min]=1, [max]=10
union all select '11-20', 11, 20
union all select '21-30', 21, 30
)tmp on A.age between tmp.[min] and tmp.[max]
group by tmp.年龄段
select
sum(case when age between 1 and 10 then 1 else 0 end) as '1-10',
sum(case when age between 11 and 20 then 1 else 0 end) as '11-20',
sum(case when age between 21 and 30 then 1 else 0 end) as '21-30'
from T
Create Table A
(id Int,
age Int)
Insert A Select 1, 12
Union All Select 2, 3
Union All Select 3, 21
Union All Select 4, 5
Union All Select 5, 15
GO
Select
SUM(Case When age Between 1 And 10 Then 1 Else 0 End) As '1- 10',
SUM(Case When age Between 11 And 20 Then 1 Else 0 End) As '11- 20',
SUM(Case When age Between 21 And 30 Then 1 Else 0 End) As '21- 30'
From
A
GO
Drop Table A
--Result
/*
1- 10 11- 20 21- 30
2 2 1
*/