Access交流中心

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

关于公司考勤数据的前期处理问题

EricYY  发表于:2013-02-28 14:21:08  
复制

 

 

上图是原始考勤资料,如何得到下图的数据?

方法不限,我想着用查询做了好几天都做不出来,求指教。

 

 

 

 

Top
西出阳关无故人 发表于:2013-02-28 15:41:46
用工号、日期分组查询后,分别查询出第一笔卡(查询1)和第二笔卡(查询2),然后基于查询1和查询2做一个联合查询,应该可以。发一个数据上来

EricYY 发表于:2013-02-28 16:18:51

考勤数据

 

1、"西出阳关"说的好像可以,具体怎么做我还是不太清楚。

2、另外,这样需要3个查询,能不能用一个查询或其他的办法解决这个问题?



落尘_小新 发表于:2013-02-28 16:32:17

看看这样行不行.

点击下载此附件



落尘_小新 发表于:2013-02-28 16:36:06
EricYY 发表于:2013-02-28 17:03:56
"小新"的办法局限性比较大,比如员工一天只刷了一笔卡用这个方法结果就不对了,刷了多笔卡也就不对了,期待别的解决办法,仍然感谢"小新"的帮助。

西出阳关无故人 发表于:2013-02-28 17:17:16

1、比如员工一天只刷了一笔卡,在13:10:00,你怎么算?第一次还是第二次?

2、比如员工一天刷了3次,分别为7:30:00、12:50:00、18:30:00,怎么算?

 



EricYY 发表于:2013-02-28 17:25:31

回"西出阳关",需要实现的结果如下:

1、第一种情况结果为第一笔卡是“13:10:00”,第二笔卡为空。

2、第二种情况结果为第一笔卡是“7:30:00”,第二笔卡为“12:50:00”;第三笔卡不做记录,属于无效刷卡。



落尘_小新 发表于:2013-02-28 22:07:58
落尘_小新 发表于:2013-02-28 22:25:14

用了个自定义函数来处理.

第一笔卡就应该是最小的记录,因为打卡是按时间来循序渐进增加的记录,那不可能第一笔卡是大的记录.这没问题.

主要考虑的是第二笔.

按你的要求,可以会有不打第二笔卡,我之后又多次打卡的情况发生.

那么所取的值应该是按时间段从小到大排序中第二大的记录(多次打卡的情况),或为空(只打一次卡的情况).

按条件

只打一次卡时,直接赋值为空字符串即可.

打多次卡时,要先对筛选结果进行升序排列,再取第二条记录的值即可.

不知道是否附合要求,不当之处请谅解.



EricYY 发表于:2013-03-01 13:43:42
"小新"客气了,话不多说,谢过"小新"和"西出阳关"。

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