北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
请帮忙看下以下这段代码哪里出错???
--建立游标的查询忽略了过滤一天内多次打卡
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 打卡表 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
end
else --工号不同,连续打卡天数重新为1,分析之前的员工是否连续打卡7天,并进行记录
--完成后将新获得的工号及打卡时间传入暂存工号
begin
if @i>=7 --写入超过7天的工号及天数数据
insert into #table (工号,连续打卡天数) values (@工号,@i)
--将新的工号和打卡时间传入
set @工号=@c1
set @time2 =@time1
set @i=1
end
FETCH NEXT FROM f_Cursor into @c1,@time1
END
CLOSE f_Cursor
DEALLOCATE f_Cursor
得到查询结果
select * from #table
drop table #table