中控考勤数据转换

摘要:
将每个人当天的多个出勤记录汇总为一个当天的记录。摘要格式如下:07:40;07:49; 07:51; 11:13; 16:08; 17:14。 考勤汇总每月生成一个表。ghbadgunmbernamedaysweekchecktime424-20100817772021-03-19108:12;17:24; 16:43; 08:30干货如下。所使用的知识点是触发点。触发器使用插入批处理插入,触发器的临时表将有多条记录。所以我们也使用游标的知识。

把每个人当天的多条考勤记录,汇总成 当天的一条记录。汇总格式如:07:40;07:49;07:51;11:13;16:08;17:14。

考勤汇总按每个月生成一张表。kq2103list。格式如下。

gh                   badgenumber       name          days           week     checktimes
424-201008    1777                                  2021-03-19         1         08:12;17:24;16:43;08:30

干货如下,用的知识点是触发器,触发器用到 insert 批量插入,触发器的临时表就会有多条记录。所以还用到游标的知识。

alter Trigger tri_Check_insert On kqjl For Insert
AS 
--定义变量
 declare @CurMonth varchar(4), @name varchar(20)
 declare @gh VARCHAR(10),@kq_bh VARCHAR(10),@kq_name VARCHAR(20), @checktype VARCHAR(1), @verifycode VARCHAR(8), @sensorid VARCHAR(8),@flag VARCHAR(1),@id int
 DECLARE @checktime datetime
 declare @sql NVARCHAR(2000) 
 declare @sTable varchar(10)
    --在inserted表中查询已经插入记录信息  select @CurMonth =CurMonth,@kq_bh=badgenumber,@checktime=checktime,@checktype=checktype,@verifycode=verifycode,@sensorid=sensorid,@flag=flag,@id=id from inserted;
 declare cur_rankschange Cursor For select CurMonth,badgenumber,checktime,checktype,verifycode,sensorid,flag,id from inserted;   -- 这个是表
  
  --INSERT INTO dbo.kqjl_temp2([CurMonth],[gh],[badgenumber],[checktime],[machine_sn]) values(@CurMonth,@gh,@kq_bh,@checktime,@id)
 Open cur_rankschange 
 fetch next from  cur_rankschange into @CurMonth,@kq_bh,@checktime,@checktype,@verifycode,@sensorid,@flag,@id
     while @@fetch_status=0
 begin
 
 select @gh=gh,@name=name from HR.dbo.kqrs with (nolock) where badgenumber=@kq_bh
 
 if not exists (select 1 from kqjl with (nolock) where CurMonth=@CurMonth and gh=@kq_bh and id<@id and abs(datediff(ss,checktime,@checktime))<60)
 begin
 set @sTable='kq'+@CurMonth+'list'
 set @sql='if exists(select 1 from '+@sTable+' with (nolock) where gh='''+@gh+''' and [days]='''+CONVERT(varchar(10),@checktime,120)+''') ' 
 set @sql=@sql+'update '+@sTable+' WITH (ROWLOCK) set checktimes=checktimes+'';''+'''+CONVERT(varchar(5), @checktime, 114 )+''',[week]=1 where [days]='''+CONVERT(varchar(10),@checktime,120)+''' and gh='''+@gh+''' '
 set @sql=@sql+'else '
 set @sql=@sql+'insert into '+@sTable+'(gh,badgenumber,name,[days],checktimes,[week]) values('''+@gh+''','+@kq_bh+','''+@name+''','''+CONVERT(varchar(10),@checktime,120)+''','''+CONVERT(varchar(5),@checktime,114)+''',1)'
 exec(@sql)
end
--else
--begin
--  set @sTable='kq'+@CurMonth+'list'
--  set @sql='if not exists(select 1 from '+@sTable+' with (nolock) where gh='''+@gh+''' and [days]='''+CONVERT(varchar(10),@checktime,120)+''') ' 
--  set @sql=@sql+'insert into '+@sTable+'(gh,badgenumber,name,[days],checktimes,[week]) values('''+@gh+''','+@kq_bh+','''+@name+''','''+CONVERT(varchar(10),@checktime,120)+''','''+CONVERT(varchar(5),@checktime,114)+''',1)'
--  exec(@sql)
--end
fetch next from  cur_rankschange into @CurMonth,@kq_bh,@checktime,@checktype,@verifycode,@sensorid,@flag,@id   
end 
close cur_rankschange
deallocate cur_rankschange
go

免责声明:文章转载自《中控考勤数据转换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# winform 弹出输入框转:IIS 应用程序池 内存 自动回收下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

pl/sql中的取模运算

pl/sql语言的取模(即求余)运算不使用大部分语言所支持的a%b而是使用函数mod(a,b)例子如下:写一个匿名块判断某年是否是闰年,能被4但是不能被100整除,或者能被400整除1declare2judgevarchar2(200);3year_inputnumber;4begin5year_input:='&输入年份';6if(mod(year...

Android开发 Camera2的CaptureRequest属性整理--完善中

当android.control.aeExposureCompensation改变时,即使AE锁定为ON,则相机设备将仍然调整其曝光值。如果android.control.aeMode是ON_ALWAYS_FLASH,现场可能会变得过度曝光。同样,AEprecapture触发取消了当AE已被锁定没有影响。见android.control.aeState为AE...

java.net.URISyntaxException的解决办法

直接采用Stringurl=“http:count=1”;HttpGethttpget=新的HttpGet(url);HttpResponseresponse=client.execute(httpget);例如,“|”&amp;因此,不能直接使用String而不是URI来访问。然后我们可以使用URL生成URI的方法来解决这个问题。代码如下:URLu...

ArcGIS Server服务状态正在停止。。。问题BUG解决

1、 ArcGISServer服务器存在服务问题:ArcGISServerManager的所有服务都显示为“正在停止…”。N个解决方案1)港口占用问题。端口4000-4002已被其他程序占用,导致服务无法正常启动。您可以通过CMD找到相关PID占用的端口,停止它,然后启动GIS服务。您也可以在安装目录中将其手动更改为D:ProgramFiles ArcGIS...

css实现切角效果

html&lt;divclass=“corner”&gt;#58a0);#58a0)右,#58a0)左;3.四个倒角css。角{width:4。圆弧倒角css。右上角(width:#58a0);背景重复:无重复;...

谷歌浏览器插件安装、VIP看视频、解除百度网盘限速

谷歌浏览器的插件主要由石油猴子获得。为了安装油猴,您需要先安装Google Access Assistant。utm_Source=chrome ntp图标建议使用几个视频下载插件https://jingyan.baidu.com/article/49711c61b19dd5fa441b7ccd.html两个插件“百度通用网盘助手”、“网盘直链下载助手”和一...