sql求解:查询连续七天以上都有打卡的员工记录

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:15:27
最近公司在做EICC认证,连续上班七天是不允许的,所以今天接到人事部的一道题,可把我难倒了,特来此求解:

比如要查出六月份连续七天都有打卡的员工

请问这个存储过程该怎麼写?

有思路也行!

帮忙解决问题后追加100分,绝不食言!

--给你个基本的查询结构和思路说明,你按自己的表结果做一下调整就OK
--建立游标的查询忽略了过滤一天内多次打卡,请根据自己表结构进行过滤
declare @c1 varchar(50)
declare @time1 varchar(50)
declare @工号 varchar(50)
declare @time2 varchar(50)
declare @i int --连续打卡天数
--
--建立游标,查询按工号和打卡时间排序
DECLARE f_Cursor CURSOR FOR SELECT 员工工号 FROM 打卡表,打卡时间 where (打卡时间 between '时间1' and '时间2') order by 员工工号 ,打卡时间
--建立临时表,留备记录
create table #table (工号 varchar(50),连续打卡天数 varchar(50))

OPEN f_Cursor
set @工号 = ''
set @i=0
FETCH NEXT FROM f_Cursor into @c1 ,@time1
--set @工号=@c1
set @time2=@time1
WHILE @@FETCH_STATUS = 0
BEGIN
if @工号=@c1 --判断取出的记录工号与暂存工号相同,
begin
--当时间间隔为1天,连续打卡天数加1;
if datediff(day,@time2,@time1)=1
set @i=@i+1
else
begin
--判断是否超过7天,超过则写入记录,再将连续打卡天数重置为1
if @i>=7
insert into #table (工号,连续打卡天数) values (@工号,@i)
set @i=1
end
set @time2=@time1