Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

access 员工考勤打卡查询语句

nana  发表于:2014-02-12 13:40:37  
复制

员工上班时间是早8:30-16:00

表1   员工编号   姓名   打卡时间

            123      张三     2013/12/19 8:09:56

            123      张三     2013/12/19 16:00:00

            124      李四     2013/12/20 8:20:56

            124      李四     2013/12/20 15:20:56

 

查询生成表2:   员工编号   姓名   打卡时间

                         123      张三     2013/12/19 8:09:56

                          124      李四     2013/12/20 8:20:56

                  表3:     员工编号   姓名   打卡时间

                          123       张三     2013/12/19 16:00:00

                          124      李四     2013/12/20 15:20:56

 

如何把员工进的时间生成表2和员工离开的时间生成表3?请高手指点,万分感谢!

 

Top
nana 发表于:2014-02-12 14:20:19
怎么没有回复的啊 ?拜托老师帮帮忙啦

奇玉 发表于:2014-02-12 15:31:00

假设每个人都有双次(2次或4次...)打卡记录,上班和下班。(可能中间出厂办事又返厂,单次打卡记录不算数,有些企业就是这样规定的)

1.建查询1,按员工编号升序(第一顺序),按打卡时间升序(第二顺序),同时为查询1加序号(因打卡时间唯一,不重复):

SELECT (select count(*) from 表1 where 打卡时间<=A.打卡时间) AS 序号, A.打卡时间, * FROM 表1 AS A ORDER BY A.员工编号, A.打卡时间;

       2.序号为奇数为上班时间,偶数为下班时间,在查询1基础上分别建查询2和查询3,再生成表2和表3即可。点击下载此附件


煮江品茶 发表于:2014-02-12 15:50:55

分两个表是脱裤子放屁,写一个查询就分开数据了:

select a.*,iif(cdate(format(a.打卡时间,"hh:nn:ss"))<cdate("9:00:00"),"上班","下班") as 出入标识 from 表1 as a



奇玉 发表于:2014-02-12 16:26:38
呵呵,老前辈,话粗理不粗。可是如果早11.00进厂上班呢?或者我们经常是上午直接从家出去办公事,下午才进厂上班,然后下班时间再统一打卡,感觉上下班的时间不太确定。

煮江品茶 发表于:2014-02-12 16:47:02

这是管理问题,要基于企业打卡制度来确定算法。

更复杂的是血泪工厂连续加班数天,这又是另外的算法处理了。还有累死在岗位出不来的情况。还有上班后躲在企业不出来,准备偷东西的情况。



ynfsr 发表于:2014-02-12 19:26:01

新建一个查询  在设计视图中 选择“汇总”,在【打卡时间】的汇总中选择”最小值“

同理另一个查询在【打卡时间】的汇总中选择”最大值“

是否是你需要的?



总记录:6篇  页次:1/1 9 1 :