表是这样的
进入时间 性别
2006-12-5 12:12:00 男
2006-12-3 10:12:00 女
2006-12-2 9:12:00 女
2006-11-15 24:12:00 男
2006-11-5 12:12:00 女
2006-10-5 12:12:00 男 结果想这样
月份 男性次数 女性次数 总次数
2006年12月 1 2 3
2006年11月 1 1 2
2006年10月 1 0 1
各位大侠帮帮忙
进入时间 性别
2006-12-5 12:12:00 男
2006-12-3 10:12:00 女
2006-12-2 9:12:00 女
2006-11-15 24:12:00 男
2006-11-5 12:12:00 女
2006-10-5 12:12:00 男 结果想这样
月份 男性次数 女性次数 总次数
2006年12月 1 2 3
2006年11月 1 1 2
2006年10月 1 0 1
各位大侠帮帮忙
,isnull (sum(case when 性别='男' then 1 else 0 end),0) as 男性次数
,isnull (sum(case when 性别='女' then 1 else 0 end),0) as 女性次数
,count(性别) as 总次数
from table
group by convert (varchar(6),进入时间,112)
drop table tb
gocreate table tb
(
进入时间 datetime,
性别 char(2)
)insert into tb(进入时间,性别) values('2006-12-5 12:12:00' , '男')
insert into tb(进入时间,性别) values('2006-12-3 10:12:00' , '女')
insert into tb(进入时间,性别) values('2006-12-2 9:12:00' , '女')
insert into tb(进入时间,性别) values('2006-11-15 00:12:00', '男')
insert into tb(进入时间,性别) values('2006-11-5 12:12:00' , '女')
insert into tb(进入时间,性别) values('2006-10-5 12:12:00' , '男')select convert(varchar(7),进入时间,120) as 月份,
sum(case when 性别 = '男' then 1 else 0 end) as 男性次数,
sum(case when 性别 = '女' then 1 else 0 end) as 女性次数,
count(*) as 总次数
from tb
group by convert(varchar(7),进入时间,120)drop table tb月份 男性次数 女性次数 总次数
------- ----------- ----------- -----------
2006-10 1 0 1
2006-11 1 1 2
2006-12 1 2 3(所影响的行数为 3 行)
drop table tb
gocreate table tb
(
进入时间 datetime,
性别 char(2)
)insert into tb(进入时间,性别) values('2006-12-5 12:12:00' , '男')
insert into tb(进入时间,性别) values('2006-12-3 10:12:00' , '女')
insert into tb(进入时间,性别) values('2006-12-2 9:12:00' , '女')
insert into tb(进入时间,性别) values('2006-11-15 00:12:00', '男')
insert into tb(进入时间,性别) values('2006-11-5 12:12:00' , '女')
insert into tb(进入时间,性别) values('2006-10-5 12:12:00' , '男')select replace(月份 , '-' , '年') + '月' as 月份, 男性次数 , 女性次数 , 总次数 from
(
select convert(varchar(7),进入时间,120) as 月份,
sum(case when 性别 = '男' then 1 else 0 end) as 男性次数,
sum(case when 性别 = '女' then 1 else 0 end) as 女性次数,
count(*) as 总次数
from tb
group by convert(varchar(7),进入时间,120)
) t
order by 月份 desc
drop table tb月份 男性次数 女性次数 总次数
---------- ----------- ----------- -----------
2006年12月 1 2 3
2006年11月 1 1 2
2006年10月 1 0 1(所影响的行数为 3 行)
drop table tb
gocreate table tb
(
进入时间 datetime,
性别 char(2)
)insert into tb(进入时间,性别) values('2006-12-5 12:12:00' , '男')
insert into tb(进入时间,性别) values('2006-12-3 10:12:00' , '女')
insert into tb(进入时间,性别) values('2006-12-2 9:12:00' , '女')
insert into tb(进入时间,性别) values('2006-11-15 00:12:00', '男')
insert into tb(进入时间,性别) values('2006-11-5 12:12:00' , '女')
insert into tb(进入时间,性别) values('2006-10-5 12:12:00' , '男')select replace(convert(varchar(7),进入时间,120) , '-' , '年') + '月' as 月份,
sum(case when 性别 = '男' then 1 else 0 end) as 男性次数,
sum(case when 性别 = '女' then 1 else 0 end) as 女性次数,
count(*) as 总次数
from tb
group by replace(convert(varchar(7),进入时间,120) , '-' , '年') + '月'
order by 月份 descdrop table tb月份 男性次数 女性次数 总次数
---------- ----------- ----------- -----------
2006年12月 1 2 3
2006年11月 1 1 2
2006年10月 1 0 1(所影响的行数为 3 行)
(
进入时间 datetime ,
性别 varchar(10)
)insert into ta select '2006-12-5 12:12:00', '男'
union all select '2006-12-3 10:12:00', '女'
union all select '2006-12-2 9:12:00', '女'
union all select '2006-11-15 23:12:00', '男'
union all select '2006-11-5 12:12:00', '女'
union all select '2006-10-5 12:12:00', '男'
select convert (varchar(4),进入时间,112)+'年'+ cast (month(进入时间) as varchar(6)) +'月' as 月份
,isnull (sum(case when 性别='男' then 1 else 0 end),0) as 男性次数
,isnull (sum(case when 性别='女' then 1 else 0 end),0) as 女性次数
,count(性别) as 总次数
from ta
group by convert (varchar(4),进入时间,112)+'年'+ cast (month(进入时间) as varchar(6)) +'月'
order by convert (varchar(4),进入时间,112)+'年' +cast (month(进入时间) as varchar(6)) +'月' desc
--结果
月份 男性次数 女性次数 总次数
-------------- ----------- ----------- -----------
2006年12月 1 2 3
2006年11月 1 1 2
2006年10月 1 0 1(所影响的行数为 3 行)
insert T select '2006-12-5 12:12:00', '男'
union all select '2006-12-3 10:12:00', '女'
union all select '2006-12-2 9:12:00', '女'
union all select '2006-11-15 00:12:00', '男'
union all select '2006-11-5 12:12:00', '女'
union all select '2006-10-5 12:12:00', '男' select convert(char(7), inTime, 120),
男性次数=sum(case when Sex='男' then 1 else 0 end),
女性次数=sum(case when Sex='女' then 1 else 0 end),
count(*)
from T
group by convert(char(7), inTime, 120)
select convert(char(7), inTime, 120) as 月份,
男性次数=sum(case when Sex='男' then 1 else 0 end),
女性次数=sum(case when Sex='女' then 1 else 0 end),
count(*)
from T
group by convert(char(7), inTime, 120)--result月份 男性次数 女性次数
------- ----------- ----------- -----------
2006-10 1 0 1
2006-11 1 1 2
2006-12 1 2 3(3 row(s) affected)
sum(case when 性别 = '男' then 1 else 0 end) as 男性次数,
sum(case when 性别 = '女' then 1 else 0 end) as 女性次数,
count(*) as 总次数
from #temptable
group by convert(varchar(7),进入时间,120)
order by convert(varchar(7),进入时间,120) DESC