读书人

1个人在项目下,凌晨2点有关问题搞不定

发布时间: 2013-03-22 09:49:50 作者: rapoo

1个人在项目上,凌晨2点问题搞不定,求救! !(分不够了,新注册的帐号!)
本帖最后由 loveyou10 于 2013-03-10 02:25:08 编辑 公司安排搞1个考勤机项目,项目虽小,麻雀虽小,技术难啊!
现请教1个分析考勤数据问题,下面是测试数据代码.


DECLARE @record TABLE (
[emp] [varchar](20) NULL,--员工
[wdate] [varchar](20) NULL,--上午上班
[wtime] [varchar](20) NULL,--上午下班
[bz] [varchar](50) NULL--上午下班

)
INSERT INTO @record
select 'emp1','2013-02-18','07:45:09',''
union
select 'emp1','2013-02-18','11:37:33',''
union
select 'emp1','2013-02-18','11:38:33','员工不小心重复刷卡'
union
select 'emp1','2013-02-18','11:48:42',''
union
select 'emp1','2013-02-18','16:51:23',''
union
select 'emp1','2013-02-18','17:01:50',''
union
select 'emp1','2013-02-18','20:02:21',''
--------------------------
union
select 'emp2','2013-02-18','19:45:09',''
union
select 'emp2','2013-02-18','23:40:33',''
union
select 'emp2','2013-02-18','23:42:33','员工不小心重复刷卡'
union
select 'emp2','2013-02-18','23:59:42',''
union
select 'emp2','2013-02-19','05:51:23','连班到了第二天,但记在18号'
union
select 'emp2','2013-02-19','05:52:50','连班到了第二天,但记在18号'
union
select 'emp2','2013-02-19','07:02:21','连班到了第二天,但记在18号'
--------------------------
union
select 'emp3','2013-02-18','07:45:09',''
union
select 'emp3','2013-02-18','11:29:33',''
union
select 'emp3','2013-02-18','11:28:33','员工不小心重复刷卡'
union
select 'emp3','2013-02-18','11:59:42',''
union
select 'emp3','2013-02-18','17:51:23',''
union
select 'emp3','2013-02-18','17:52:50','员工不小心重复刷卡'
union
select 'emp3','2013-02-18','17:53:21','员工不小心重复刷卡'
--------------------------
union
select 'emp4','2013-02-19','19:45:09',''
union
select 'emp4','2013-02-19','23:40:33',''
union
select 'emp4','2013-02-19','23:42:33','员工不小心重复刷卡'
union
select 'emp4','2013-02-19','23:59:42',''
union
select 'emp4','2013-02-20','05:51:23','连班到了第二天,但记在19号'
union
select 'emp4','2013-02-20','05:52:50','连班到了第二天,但记在19号'
union
select 'emp4','2013-02-20','08:02:21','连班到了第二天,但记在19号'


DECLARE @WorkDetail TABLE (
[wkid] [varchar](20) NULL,--班次
[ss] [varchar](8) NULL,--上午上班
[sx] [varchar](8) NULL,--上午下班
[xs] [varchar](8) NULL,--下午上班
[xx] [varchar](8) NULL,--下午下班
[ws] [varchar](8) NULL,--晚上上班
[wx] [varchar](8) NULL,--晚上下班
[bz] [varchar](50) NULL--晚上下班

)

INSERT INTO @WorkDetail
select '1加班白班','08:00','11:30','12:00','16:50','18:00','20:00',''
union
select '2加班晚班','20:00','23:30','00:00','05:30','06:00','08:00','备注:晚上8点上班到第二天8点'
union
select '3白班','08:00','11:30','12:00','17:30','','',''
union
select '4晚班','20:00','23:30','00:00','05:30','06:00','07:00','备注:晚上8点上班到第二天7点'
union
select '5质检班','09:00','11:00','13:00','17:00','18:30','19:30',''

select * from @WorkDetail
select * from @Record order by emp,wdate,wtime
/*
------期望的结果.
emp1 2012-02-18 1加班白班


emp2 2012-02-18 4晚班
emp3 2012-02-18 3白班
emp4 2012-02-19 2加班晚班
*/


[解决办法]
引用:
引用:最好是打卡的时候,明确自己现在是来还是走
你应该刷过卡,没有来去这选项的.


这样肯定会出现歧义:
1日上午打卡了
1日下午没打卡
2日上午的打卡:算是通宵加班完回家,还是昨天下午忘了打卡,今天只是正常来上班?

必须人为通过事后补充修正状态才行
[解决办法]
首先系统设计的就不合理。进出的刷卡机不会是同一台。因此应该有刷卡进出的标志位。

读书人网 >SQL Server

热点推荐