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

再提sql统计语句(请 潇洒老乌龟关注!)
上次我提了个统计语句的问题
是这样的:

从一个表中统计出每天没台终端的开关机状态。
表中主要包括:终端编号(mobile),(lasttime)时间,(runstatus)终端状态
等字段   ,无主键。
终端状态每天记录4次,即lasttime   记录同一天的四个时间段(如2007-8-24   08:45)。状态有三种(0   正常,2   数据无效,1   关机),其中,0和2   都算是开机,每天的四个时间段中有一次开机,这一天算是开机,四次都关机,算是关机。
要求统计出,一个时间段内每天没台终端的开关机状态。

后来简化为如下问题:

如果改成如下:
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)   ,   cardid   varchar(10),time   datetime,status   varchar(10))

insert   into   tb   values(1,       '111 ',       '111 ',       '2007-8-15   08:00:22 ',             '来 ')
insert   into   tb   values(1,       '111 ',       '111 ',       '2007-8-15   13:30:22 ',           '迟到 ')
insert   into   tb   values(2,       '222 ',       '222 ',       '2007-8-15   08:00:22 ',             '没来 ')
insert   into   tb   values(2,       '222 ',       '222 ',       '2007-8-15   13:30:22 ',           '没来 ')
insert   into   tb   values(3,       '111 ',       '111 ',       '2007-8-15   08:00:22 ',             '没来 ')
insert   into   tb   values(3,       '333 ',       '333 ',       '2007-8-1513:30:22 ',