SQL语言考勤打卡记录

作者&投稿:彘郊 (若有异议请与网页底部的电邮联系)
问一个考勤SQL语句的问题,想查询一整月考勤记录~

select 员工ID,a.[1] 上班时间,b.[1] 下班时间,datediff(mm,b.[1] - a.[1]) 累计时间,
a.[2] 上班时间,b.[2] 下班时间,datediff(mm,b.[2] - a.[2]) 累计时间,.......
from

( select 员工ID,上班时间 from 考勤表
pivot ( min( 考勤时间) for datepart(dd, 考勤时间) in ( [1],[2],[3],................... )) as pvt ) a,

( select 员工ID,上班时间 from 考勤表
pivot ( mxn( 考勤时间) for datepart(dd, 考勤时间) in ( [1],[2],[3],................... )) as pvt ) b
where a.员工ID = b.员工ID

楼主好,我这几天也正在做考勤的东西。你想要个什么样子的数据,或者有什么问题呢?我想说的是,SQL中关于时间的东西都不要想的太简单,他是个复杂的东西。说明下你的问题,我估计可以给你解决。

首先要有一个工厂日历的表,列出所有工作日,至少一个字段:工作日 varchar(10)。
然后这样即可:
select id,
迟到次数=sum(case when timec>'08:00:00' tand timec<'09:00:00' then 1 else 0 end),
旷工次数=sum(case when timec>'09:00:00' or timec is null then 1 else 0 end),
打卡次数=sum(case when timec is null then 0 else 1 end)
from
(
SELECT * FROM 工厂日历 left join
(select id,
datec=convert(varchar(10),card_time,120),
timec=substring(convert(varchar,card_time,120),12,8)
from tablename
) a
on 工作日=DATEC
) b
group by ID

假设这个表的名称叫做 work,来存储打卡的时间信息
select ID,
sum(case when card_time>='%-%-% 08:00:00' and card_time<='%-%-% 08:59:59' then 1 else 0 end ) as '迟到次数',
sum(case when card_time>='%-%-% 09:00:00' or card_time='' then 1 else 0 end ) as '旷工次数',
sum(case when card_time<>'' then 1 else 0 end) as '总的打卡次数'
from work
group by ID
不知道时间这么表示对不对


指纹考勤机有什么优点?
指纹考勤机的优点:1. 预防代打卡现象(作假概率随着厂家技术的降低)2.耗材低(人都有指纹,不会像ID卡,卡片会丢失的情况)3.指纹机都是使用电脑软件的。方便统计(也有机器自动统计)缺点是:指纹考勤机嘛,如果指纹被化学物品覆盖了,或者被胶之类的东西覆盖了的话,就会导致识别概率降低。希望可以...

如何设置做2休1、三班倒等排班考勤?
电脑端【企业管理后台(oa.dingtalk.com)】-【工作台】-【考勤打卡】-【考勤组管理】-【新增考勤组】-【考勤类型】-选择【按排班时间上下班】; 图片1:https:\/\/img.alicdn.com\/tfs\/TB1CSB2PqL7gK0jSZFBXXXZZpXa-590-1278.jpg;

浦江县19857204884: 写一条sql语句 有每月员工打卡记录表 table -
滕家奥天: select UserID ,count(*)AS CISHU from table where SETTIME NOT NULL GROUP BY USERID ORDER BY USERID ASC HAVING CISHU

浦江县19857204884: 请教一个关于考勤的sql语句 -
滕家奥天: select 日期,工号,min(时间) 时间 from 表A where 时间 between 21000 and 24000 group by 日期,工号

浦江县19857204884: sql查询一段时期里每一天所有员工的打卡记录 -
滕家奥天: 1、某一位员工在指定时间段里每一天的最早和最迟打卡记录 select min(card_no) card_no,min(fname) fname,min(rec_dat) start_time,max(rec_dat) end_time from EV_LOG where card_no='员工卡号' and evnt_descrp='Access granted' and ...

浦江县19857204884: sql语句 时间段查询 高分 -
滕家奥天: sql语句如下:select 打卡记录 from recordtime where (gettime>='开始时间' and gettime and (DATEPART(hh, gettime)>=8 and DATEPART(hh, gettime)其中:打卡记录,是你具体要查询的信息的表中的字段,每个字段用逗号分隔,强烈建议你不要用“*”号 开始时间和结束时间即是WEB页面传进来的日期 我多加了两对括号只是便于理解 注意SQL语句中的所有的符合都要是英文输入法中的字符

浦江县19857204884: sql 考勤统计查询 -
滕家奥天: select name,dept,count(*) 工作天数,sum(xbsj-sbsj) 工作累计时间,count(case when kqqk=1 then 1 end) 迟到天数,count(case when kqqk=2 then 1 end) 早退天数 from table1 join table2 on table1.uid=table2.uid group by name,dept

浦江县19857204884: sql语句实现考勤报表,sql语句怎样实现员工同一天只有两次考勤 -
滕家奥天: 两次考勤:select 员工ID,TRUNC(TIME,'d') FROM 考勤表 group by 员工ID,TRUNC(TIME,'d')having count(*)=2; 漏打:select 员工ID,TRUNC(TIME,'d') FROM 考勤表 group by 员工ID,TRUNC(TIME,'d') having count(*)<2;

浦江县19857204884: 求sql语句,两条记录合并为一条记录(考勤类) -
滕家奥天: select EmplID, ResultDate,max(case InOutType when 0 then RecDate else '' end) as RecDate1,max(case InOutType when 0 then RecTime else '' end) as RecTime1,max(case InOutType when 1 then RecDate else '' end) as RecDate2,max(case InOutType when 1 then RecTime else '' end) as RecTime2 from 表a group by EmplID, ResultDate

浦江县19857204884: 谁可以帮我用SQL语句做学生考勤查询.. -
滕家奥天: 建库create database 库名 建表create table 表名 (列名 数据类型, ..... .....) 添加数据 insert into 表名(列名全都写出来用,分开) values(与列中数据类型相匹配的内容) 你想要查询什么内容?直接HI我吧

浦江县19857204884: 求教考勤报表SQL代码实现 -
滕家奥天: 我们使用的ZK-HRMS系统中,针对考勤汇总报表的SQL 语句供参考如下图:

浦江县19857204884: sql存储过程实例,一个关于上下班考勤的存储过程,高分 -
滕家奥天: select [员工名字],min([签到时间]) [签到时间] from [表] where [签到时间]group by [员工名字] union select [员工名字],max([签到时间]) [签到时间] from [表] where [签到时间]>'12:00' group by [员工名字] 看有没有迟到早退用case 语句将签到时间和正常上下班时间比较就好了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网