MySQL 获取员工打卡和打卡数据

问题描述 投票:0回答:2

我正在尝试运行查询来获取员工按月打卡和打卡的数据。问题是两个冲孔(进出)都在同一列中。 我有两个表“employee”和“punch_time”,如下

员工表:

身份证 员工姓名
1 emp1
2 emp2
3 emp3

打卡时间表:

打孔ID empId 打卡时间
1 emp1 2022-05-01 10:02:25
2 emp2 2022-05-01 10:00:23
3 emp3 2022-05-01 18:15:04
4 emp1 2022-05-01 18:10:25
5 emp2 2022-05-01 18:00:00
6 emp1 2022-05-02 10:00:05
7 emp2 2022-05-02 10:10:15
8 emp1 2022-05-02 18:02:25
9 emp2 2022-05-02 18:02:25

我需要如下结果:

空。 日期 在。 出去。
emp1 2022-05-01 10:02:25 18:10:25
emp2 2022-05-01 10:23:00 18:00:00
emp3 2022-05-01 18:15:04
emp1 2022-05-02 10:00:05 18:02:25
emp2 2022-05-02 10:10:15 18:02:25
emp3 2022-05-02
emp1 2022-05-03
emp2 2022-05-03
emp3 2022-05-03
mysql
2个回答
0
投票

这是获取您想要的记录的方法。唯一缺少的是它没有显示缺勤线。

SELECT
    e.employeeName emp,
    CAST(punchTime AS DATE) punchDate,
    TIME(min(punchTime)) InTime,
    if(max(punchTime)=min(punchTime),null,TIME(max(punchTime))) OutTime
FROM Employee e
JOIN Punch_time p ON e.employeeName = p.empId
GROUP BY punchDate, empId;

小提琴链接

此外,建议在 PunchTime 表中使用 EmpID(数字索引)。目前该关系位于文本字段上。 Employee.employeeName <> Punch_Time.empId

NOT ADVISED


0
投票
select EmpId,
   [Punch-In],
   [Punch-Out],
   DATEDIFF(SECOND, [Punch-In], [Punch-Out]) AS INTIME

来自 ( 选择员工 ID, [打卡], Lead([Punch-Out]) OVER(按 EMPID 排序)AS [Punch-Out] 从 ( 选择 EmpId, [打卡], [打孔] 从 ( 选择案例 当 LEN(pin) = 1 时 “00”+ 引脚 当 LEN(pin) = 2 时 “0”+ 引脚 别的 别针 结束 AS EmpId, 名称为 EmpName, event_time 作为打卡时间, 案件 当 reader_name LIKE '%-%in%' 时 “打卡” 别的 “冲出” END AS 打孔类型, id AS 交易Id, 日期名称(dw,event_time)作为日 FROM [acc_transaction] AND (NOLOCK) WHERE 格式(event_time, 'yyyy-MM-dd') = '2024-01-04' 和引脚 = '3573' AND ISNULL(pin, '') <> '' AND NULLIF(PIN, '') IS NOT NULL 并且别针不喜欢“%hk%” 并且名称不像“%temp%” 并且名称不像“%security%” 并且别针不喜欢's%' 并且别针不喜欢“t%” 并且别针不像“c%” 并且名称不像“test%” AND event_no NOT IN ( 27, 23 ) AND event_point_name NOT IN ( '3A_Server_Room', 'CWF Z2 服务器机房', 'CWF Z2 到 Z3', '3F 服务器机房'、'CWF Z3 至 Z4'、'CWF Z3 枢纽机房'、'CWFZ2 - 2-1'、 “CWFZ2 - 2-2”、“Mys 服务器机房” ) --按事件时间升序排列 ) AS 源表 枢 ( MIN(打卡时间) FOR 打孔类型输入 ([打入], [打出]) ) 作为枢轴 )B ) C 在哪里 ( [打卡] 不为空 或 [Punch-Out] 不为空 )

© www.soinside.com 2019 - 2024. All rights reserved.