SQL用group by (MembeID)考勤人,只能读一条的,要怎么把所有的都读出来好作统计?可按月统计,也可按年统计,有没有方法或者代码?
...全文
1328打赏收藏
一个考勤统计的问题 WCF怎么实现考勤统计代码
表结构是这样http://hi.csdn.net/attachment/201203/21/10169717_1332318024lDPi.png我读数据时,我的数据显示 怎么作成类似人家这样 SQL用group by (MembeID)考勤人,只能读一条的,要怎么把所有的都读出来好作统计?可按月统计,也可按年统计,有没有方法或者代码?
貌似可以用,这个:
select MemberID,
count(case checkInStatus when 1 then 1 end ) 正常,
count(case checkInStatus when 2 then 2 end ) 临界,
count(case checkInStatus when 3 then 3 end ) 迟到
from dk_Attendance_Records
group by MemberID
可以统计每个人每个月考勤记录的条数
SQL code
select MemberID,COUNT(1) AS 数据条数,SUBSTRING(convert(varchar(10),AttendanceDate,23),1,7) as 考勤年月 from 考勤表 group by MemberID,SUBSTRING(convert(varchar(10),AttendanceDate,23)……
[/Quote]
select MemberID,COUNT(1) AS 数据条数,SUBSTRING(convert(varchar(10),AttendanceDate,23),1,7) as 考勤年月,count(case checkInStatus when 0 then 1 end) as 未考勤,count(case checkInStatus when 1 then 1 end) as正常,
count(case checkInStatus when 2 then 1 end ) as 临界,
count(case checkInStatus when 3 then 1 end ) as 迟到 from 考勤表 group by MemberID,SUBSTRING(convert(varchar(10),AttendanceDate,23),1,7);
这样写就差不多了
select MemberID,COUNT(1) AS 数据条数,SUBSTRING(convert(varchar(10),AttendanceDate,23),1,7) as 考勤年月 from 考勤表 group by MemberID,SUBSTRING(convert(varchar(10),AttendanceDate,23),1,7)
还望详细说明白一点,group by 时间?人员呢?
表的结构是这样的
RecordID int 记录ID
MemberID int 成员ID
AttendanceDate datetime 考勤日期
CheckInTime time 上班时间
CheckInStatus nvarchar(100) 上班考勤状态
CheckOutTime time 下班时间
CheckOutStatus nvarchar(100) 下班考勤状态
Remark ntext 备注
group by 考勤日期吗?