You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询特定日期未打卡员工的编号、部门及缺勤日期

表结构说明

  • Employee_Info(员工基础信息表):存储所有在职员工的基础数据,包含字段Employee_no(员工号)、Name(姓名)、Department(所属部门)
  • Attendance(考勤打卡表):仅留存已完成打卡员工的记录,包含字段Employee_no(员工号)、Attendance_Date(打卡日期)

实现逻辑

要筛选指定日期未打卡的员工,本质是找出所有在员工基础表中存在、但在目标日期的打卡记录表中不存在的员工,以下提供两种通用实现方案。

具体SQL代码

方案1:左连接过滤(推荐,兼容性&性能更稳定)

SELECT 
  e.Employee_no,
  e.Department,
  '06/25/2021' AS Absent_on -- 此处替换为需要查询的指定缺勤日期即可
FROM Employee_Info e
LEFT JOIN Attendance a 
  ON e.Employee_no = a.Employee_no
  AND a.Attendance_Date = '06/25/2021' -- 与上方指定日期保持一致
WHERE a.Employee_no IS NULL;

如果你的数据库中日期存储为标准YYYY-MM-DD格式,直接将上述日期参数替换为对应格式即可,比如'2021-06-25'。

方案2:NOT IN实现

SELECT 
  Employee_no,
  Department,
  '06/25/2021' AS Absent_on
FROM Employee_Info
WHERE Employee_no NOT IN (
  SELECT DISTINCT Employee_no 
  FROM Attendance 
  WHERE Attendance_Date = '06/25/2021'
);

注意:如果Attendance表的Employee_no字段可能存在NULL值,NOT IN会返回空结果,该场景请勿使用方案2。

输出效果

运行后结果格式与要求一致:

Employee_no       Department       Absent_on
10160100000       XYZ              06/25/2021

内容的提问来源于stack exchange,提问作者xajid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:39:01