考勤有关问题,有班次,有工作日历,有打卡记录,怎么做考勤分析
考勤问题,有班次,有工作日历,有打卡记录,如何做考勤分析
考勤问题,有班次,有工作日历,有打卡记录,如何做考勤分析
等一下我整理些数据出来
------解决方案--------------------
http://so.****.net/search?t=thread&q=%e8%80%83%e5%8b%a4&category=A487DFB4-AD04-4694-AAE7-2BF358DE9B52,A8983D7F-322C-49E5-8EC2-548C623D1929,55B4468C-6FDE-444F-BDE0-6E82082B1B73,292A9CA6-1A8E-49BB-A408-6F79DF2268EF,F5ECBFE4-F43F-4CB9-9F32-EFEACF9FD57A&uname=&rname=&d1=2010-02-24&d2=2010-05-24&field=all
------解决方案--------------------
取出打卡记录,根据班次,工作日历来一个一个分析
------解决方案--------------------
全是nvarchar--最好用日期類型
------解决方案--------------------
最好貼數據,看你這結構真不會猜。
如果有沒有卡重復,日期為什麼是字符,存儲內容是,一個人同一天可上幾個班等等
------解决方案--------------------
參照
http://topic.****.net/u/20111012/14/e16ec358-61ca-46e4-ac3e-d7339a0f5404.html
------解决方案--------------------
考勤分析需要得到什么结果?
------解决方案--------------------
不知你要什么格式的,
考勤问题,有班次,有工作日历,有打卡记录,如何做考勤分析
- SQL code
--班次 CREATE TABLE [dbo].[BANCI]( [Code] [nvarchar](20) NOT NULL, [Item] [int] NOT NULL, [KTIME] [nvarchar](20) NULL, [KSTA] [nvarchar](20) NULL, [KLST] [nvarchar](20) NULL ) ON [PRIMARY] --打卡记录 CREATE TABLE [dbo].[CardList]( [Emp] [nvarchar](20) NULL, [CDate] [nvarchar](20) NULL, [CardTime] [nvarchar](20) NULL ) ON [PRIMARY] --工作日历 CREATE TABLE [dbo].[WorkDate]( [Emp] [nvarchar](20) NULL, [CDate] [nvarchar](20) NULL, [Banci] [nvarchar](20) NULL ) ON [PRIMARY]
等一下我整理些数据出来
------解决方案--------------------
http://so.****.net/search?t=thread&q=%e8%80%83%e5%8b%a4&category=A487DFB4-AD04-4694-AAE7-2BF358DE9B52,A8983D7F-322C-49E5-8EC2-548C623D1929,55B4468C-6FDE-444F-BDE0-6E82082B1B73,292A9CA6-1A8E-49BB-A408-6F79DF2268EF,F5ECBFE4-F43F-4CB9-9F32-EFEACF9FD57A&uname=&rname=&d1=2010-02-24&d2=2010-05-24&field=all
------解决方案--------------------
取出打卡记录,根据班次,工作日历来一个一个分析
------解决方案--------------------
全是nvarchar--最好用日期類型
------解决方案--------------------
最好貼數據,看你這結構真不會猜。
如果有沒有卡重復,日期為什麼是字符,存儲內容是,一個人同一天可上幾個班等等
------解决方案--------------------
參照
http://topic.****.net/u/20111012/14/e16ec358-61ca-46e4-ac3e-d7339a0f5404.html
------解决方案--------------------
考勤分析需要得到什么结果?
------解决方案--------------------
不知你要什么格式的,
- SQL code
select a.emp,b.cdate,c.ctype+': '+ case when cast(a.cardtime as datetime) between cast(c.KSTA as datetime) and cast(c.KLST as datetime) then '正常' else '未刷卡' end 'ctype' from (select row_number() over(partition by cdate order by cardtime) rn,* from CardList) a inner join WorkDate b on a.emp=b.emp and a.cdate=b.cdate inner join BANCI c on b.banci=c.code and a.rn=c.item where b.banci is not null emp cdate ctype -------------------- -------------------- ---------------------------- YXX0004 2011-08-01 上午上班: 正常 YXX0004 2011-08-01 上午下班: 正常 YXX0004 2011-08-01 下午上班: 正常 YXX0004 2011-08-01 下午下班: 正常 YXX0004 2011-08-02 上午上班: 正常 YXX0004 2011-08-02 上午下班: 正常 YXX0004 2011-08-02 下午上班: 正常 YXX0004 2011-08-03 上午上班: 正常 YXX0004 2011-08-03 上午下班: 正常 YXX0004 2011-08-03 下午上班: 正常 YXX0004 2011-08-03 下午下班: 正常 YXX0004 2011-08-04 上午上班: 正常 YXX0004 2011-08-04 上午下班: 正常 YXX0004 2011-08-04 下午上班: 正常 YXX0004 2011-08-04 下午下班: 正常 YXX0004 2011-08-05 上午上班: 正常 YXX0004 2011-08-05 上午下班: 正常 YXX0004 2011-08-05 下午上班: 正常 YXX0004 2011-08-05 下午下班: 正常 YXX0004 2011-08-07 上午上班: 正常 YXX0004 2011-08-07 上午下班: 正常 YXX0004 2011-08-07 下午上班: 未刷卡 YXX0004 2011-08-07 下午下班: 正常 YXX0004 2011-08-08 上午上班: 正常 YXX0004 2011-08-08 上午下班: 正常 YXX0004 2011-08-08 下午上班: 正常 YXX0004 2011-08-08 下午下班: 正常 YXX0004 2011-08-09 上午上班: 正常 YXX0004 2011-08-09 上午下班: 正常 YXX0004 2011-08-09 下午上班: 正常 YXX0004 2011-08-09 下午下班: 正常 YXX0004 2011-08-10 上午上班: 正常 YXX0004 2011-08-10 上午下班: 正常 YXX0004 2011-08-10 下午上班: 正常 YXX0004 2011-08-10 下午下班: 正常 YXX0004 2011-08-11 上午上班: 正常 YXX0004 2011-08-11 上午下班: 正常 YXX0004 2011-08-11 下午上班: 正常 YXX0004 2011-08-11 下午下班: 正常 YXX0004 2011-08-12 上午上班: 正常 YXX0004 2011-08-12 上午下班: 正常 YXX0004 2011-08-12 下午上班: 正常 YXX0004 2011-08-12 下午下班: 正常 YXX0004 2011-08-14 上午上班: 正常 YXX0004 2011-08-14 上午下班: 正常 YXX0004 2011-08-14 下午上班: 未刷卡 YXX0004 2011-08-14 下午下班: 正常 YXX0004 2011-08-15 上午上班: 正常 YXX0004 2011-08-15 上午下班: 正常 YXX0004 2011-08-15 下午上班: 正常 YXX0004 2011-08-15 下午下班: 正常 YXX0004 2011-08-16 上午上班: 正常 YXX0004 2011-08-16 上午下班: 正常 YXX0004 2011-08-16 下午上班: 正常 YXX0004 2011-08-16 下午下班: 正常 YXX0004 2011-08-17 上午上班: 正常 YXX0004 2011-08-17 上午下班: 正常 YXX0004 2011-08-17 下午上班: 未刷卡 YXX0004 2011-08-18 上午上班: 正常 YXX0004 2011-08-18 上午下班: 正常 YXX0004 2011-08-18 下午上班: 正常 YXX0004 2011-08-18 下午下班: 正常 YXX0004 2011-08-19 上午上班: 正常 YXX0004 2011-08-19 上午下班: 正常 YXX0004 2011-08-19 下午上班: 正常 YXX0004 2011-08-19 下午下班: 正常 YXX0004 2011-08-21 上午上班: 正常 YXX0004 2011-08-21 上午下班: 正常 YXX0004 2011-08-21 下午上班: 未刷卡 YXX0004 2011-08-21 下午下班: 正常 YXX0004 2011-08-22 上午上班: 正常 YXX0004 2011-08-22 上午下班: 正常 YXX0004 2011-08-22 下午上班: 正常 YXX0004 2011-08-22 下午下班: 正常 YXX0004 2011-08-23 上午上班: 正常 YXX0004 2011-08-23 上午下班: 正常 YXX0004 2011-08-23 下午上班: 正常 YXX0004 2011-08-23 下午下班: 正常 YXX0004 2011-08-24 上午上班: 正常 YXX0004 2011-08-24 上午下班: 正常 YXX0004 2011-08-24 下午上班: 正常 YXX0004 2011-08-24 下午下班: 正常 YXX0004 2011-08-25 上午上班: 正常 YXX0004 2011-08-25 上午下班: 正常 YXX0004 2011-08-25 下午上班: 正常 YXX0004 2011-08-25 下午下班: 正常 YXX0004 2011-08-26 上午上班: 正常 YXX0004 2011-08-26 上午下班: 正常 YXX0004 2011-08-26 下午上班: 正常 YXX0004 2011-08-26 下午下班: 正常 YXX0004 2011-08-28 上午上班: 正常 YXX0004 2011-08-28 上午下班: 正常 YXX0004 2011-08-28 下午上班: 未刷卡 YXX0004 2011-08-29 上午上班: 正常 YXX0004 2011-08-29 上午下班: 正常 YXX0004 2011-08-29 下午上班: 正常 YXX0004 2011-08-29 下午下班: 正常 YXX0004 2011-08-30 上午上班: 正常 YXX0004 2011-08-30 上午下班: 正常 YXX0004 2011-08-30 下午上班: 正常 YXX0004 2011-08-30 下午下班: 正常 YXX0004 2011-08-31 上午上班: 正常 YXX0004 2011-08-31 上午下班: 正常 YXX0004 2011-08-31 下午上班: 正常 YXX0004 2011-08-31 下午下班: 正常