首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个表查询 统计次数的有关问题

2012-02-05 
一个表查询 统计次数的问题idnamecardidtimejinchu这个是字段表名jc_table11111112007-8-1502:22:22进2222

一个表查询 统计次数的问题
id     name   cardid               time                         jinchu     这个是字段     表名   jc_table
1       111       111       2007-8-15   02:22:22             进
2       222       222       2007-8-15   02:22:22             出
3       111       111       2007-8-15   02:25:22             出

我想的到结果是  
id     name   cardid             次数
1       111       111                   2
2       222       222                   1


[解决办法]
select id , name, cardid,count(*) as 次数
from jc_table
group by id , name, cardid
[解决办法]
select name ,cardid , count(*) 次数 from tb group by name ,cardid

[解决办法]
select identity(int,1,1) as id,a.* into # from (select name,cardid,count(*) from jc_table group by name,cardid) a

select * from #

[解决办法]

select name,cardid,count(*) as 次数,min(id) as id
from jc_table

group by name,cardid
[解决办法]
借用一下!

如果改成如下:
id name cardid time status 这个是字段 表名 jc_table
1 111 111 2007-8-15 08:00:22 来
1 111 111 2007-8-15 13:300:22 迟到

2 222 222 2007-8-15 08:00:22 没来
2 222 222 2007-8-15 13:300:22 没来

3 111 111 2007-8-15 08:00:22 没来
3 333 333 2007-8-15 08:00:22 来

我想的到结果是
id name cardid status
1 111 111 来
2 222 222 没来
3 333 333 来

即 同一天的两次考勤中,有一次来了(包括迟到)算来,两次都没来的算没来!
表中记录一个月中,每人的考勤记录,要求统计每天每人的出勤情况。

请各位多多指点,谢谢楼住和各位!


[解决办法]
修改一下!

如果改成如下:
id name cardid time status 这个是字段 表名 jc_table
1 111 111 2007-8-15 08:00:22 来
1 111 111 2007-8-15 13:30:22 迟到

2 222 222 2007-8-15 08:00:22 没来
2 222 222 2007-8-15 13:30:22 没来

3 111 111 2007-8-15 08:00:22 没来
3 333 333 2007-8-15 13:30:22 来

我想的到结果是
id name cardid status
1 111 111 来
2 222 222 没来
3 333 333 来

即 同一天的两次考勤中,有一次来了(包括迟到)算来,两次都没来的算没来!
表中记录一个月中,每人的考勤记录,要求统计每天每人的出勤情况。

请各位多多指点,谢谢楼住和各位!

[解决办法]
--来个投机的写法.根据三种状态的音序...
--请注意,不是通用的
--测试数据
create table tb(
id int,
name varchar(10),
carid varchar(10),
time datetime,
status varchar(10))
insert tb select 1, '111 ', '111 ', '2007-8-15 ', '来 '
union all select 1, '111 ', '111 ', '2007-8-15 ', '迟到 '


union all select 2, '222 ', '222 ', '2007-8-15 ', '没来 '
union all select 2, '222 ', '222 ', '2007-8-15 ', '没来 '
union all select 3, '333 ', '333 ', '2007-8-15 ', '没来 '
union all select 3, '333 ', '333 ', '2007-8-15 ', '来 '
select id,name,carid,status=(case when min(status)= '没来 ' then '没来 ' else '来 ' end)
from tb group by id,name,carid
drop table tb
--结果:
/*
id name carid status
----------- ---------- ---------- ------
1 111 111 来
2 222 222 没来
3 333 333 来
*/

热点排行