mysql查询员工已打卡和未打卡记录

文章描述:

mysql查询员工打开签到记录,把签到结果放到一个字段里面

 创建数据表

CREATE TABLE `time_summary` (
  `id` int NOT NULL AUTO_INCREMENT,
  `emp_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '员工号',
  `emp_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '员工姓名',
  `time_date` date DEFAULT NULL COMMENT '填报日期',
  `finish_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '完成标志:0:未完成,1:已完成',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

 

 

插入数据

INSERT INTO `time_summary` (`id`, `emp_id`, `emp_name`, `time_date`, `finish_flag`) VALUES
(1, '1', '张三', '2025-05-01', '1'),
(2, '1', '张三', '2025-05-02', '1'),
(3, '1', '张三', '2025-05-03', '0'),
(4, '1', '张三', '2025-05-04', '1'),
(5, '1', '张三', '2025-05-05', '0'),
(6, '2', '李四', '2025-05-01', '1'),
(7, '2', '李四', '2025-05-02', '0');

查询SQL

SELECT
    su.emp_id,
    su.emp_name,
    a.notFinished,
    b.finished 
FROM
    (
    SELECT
        t.emp_id,
        t.emp_name 
    FROM
        time_summary t 
    WHERE
        t.time_date >= '2025-05-01' 
        AND t.time_date <= '2025-05-30' 
    GROUP BY
        t.emp_id,
        t.emp_name 
    ) su
    LEFT JOIN (
    SELECT
        t.emp_id,
        t.emp_name,
        GROUP_CONCAT( SUBSTRING( t.time_date, 9, 2 ) SEPARATOR ',' ) AS notFinished 
    FROM
        time_summary t 
    WHERE
        t.time_date >= '2025-05-01' 
        AND t.time_date <= '2025-05-30' 
        AND t.finish_flag = '0' 
    GROUP BY
        t.emp_id,
        t.emp_name 
    ) a ON su.emp_id = a.emp_id
    LEFT JOIN (
    SELECT
        t.emp_id,
        t.emp_name,
        GROUP_CONCAT( SUBSTRING( t.time_date, 9, 2 ) SEPARATOR ',' ) AS finished 
    FROM
        time_summary t 
    WHERE
        t.time_date >= '2025-05-01' 
        AND t.time_date <= '2025-05-30' 
        AND t.finish_flag = '1' 
    GROUP BY
        t.emp_id,
        t.emp_name 
    ) b ON su.emp_id = b.emp_id

 

结果:

发布时间:2025/05/18

发表评论