mysql - 根据mysql中的某些条件将一条记录拆分为两条记录
问题描述
我致力于清理具有正常轮班和夜班数据的数据。表格有进站时间、出站时间、进房时间、出房时间等字段,用于计算在场时间、工作时间等kpi。在正常轮班的情况下,我会在 mysl 表中提供的单个记录中显示员工旅程。
站点名称、员工、站点进入时间、任务、站点退出时间
在夜班的情况下,我想将一条记录分成两条记录。例如,一名员工于 06-02-2019 21:00:00 进入站点,他于 07-02-2019 04:00:00 离开站点。在第一条记录中,我想显示站点进入时间 - 06-02-2019 21:00:00,站点退出时间 - 06-02-2019 11:59:59 在第二条记录中,站点进入时间为 - 07-02 -2019 12:00:00 和站点出口将是 - 07-02-2019 04:00:00
create table smartview.test_table1(
Employee varchar(45),
site_name varchar(45),
Employee_code varchar(45),
Room_no varchar(45),
Task_type varchar(45),
Site_Enter_Time timestamp,
Room_Enter_Time timestamp,
Room_Exit_Time timestamp,
Site_Exit_Time timestamp
);
insert into smartview.test_table1(Employee,site_name,Employee_code,Room_no,Task_type,Site_Enter_Time,Room_Enter_Time,Room_Exit_Time,Site_Exit_Time) values
('Sharma','test_site1','003','Room2','floor cleaning',STR_TO_DATE('02-03-2019 14:00:00','%m-%d-%Y %H:%i:%s'),STR_TO_DATE('02-03-2019 16:00:00','%m-%d-%Y %H:%i:%s'),STR_TO_DATE('02-03-2019 23:00:00','%m-%d-%Y %H:%i:%s'),STR_TO_DATE('02-04-2019 02:00:00','%m-%d-%Y %H:%i:%s'));
解决方案
您可以使用UNION
创建两行,其中进入和退出时间分布在不同的日期。简化查询:
-- shift ends on same day
SELECT employee, site_enter_time, site_exit_time
FROM test_table1
WHERE DATE(site_enter_time) = DATE(site_exit_time)
UNION ALL
-- shift ends on next day: first record
SELECT employee, site_enter_time, DATE(site_exit_time) - INTERVAL 1 SECOND
FROM test_table1
WHERE DATE(site_enter_time) = DATE(site_exit_time) - INTERVAL 1 DAY
UNION ALL
-- shift ends on next day: second record
SELECT employee, DATE(site_exit_time), site_exit_time
FROM test_table1
WHERE DATE(site_enter_time) = DATE(site_exit_time) - INTERVAL 1 DAY
推荐阅读
- laravel - 使用 3 个表在 laravel eloquent 中创建计算的自定义列
- c# - T4 TemplateFileManager 输出到项目文件夹
- python - 查找连续的最后一个字母:尝试遍历连续字母时列表索引超出范围
- android - 如何使用按钮阻止屏幕滑动(viewpager)
- java - 如何在 Spring Boot 中使用另一表中的外键从一个表中获取值?
- mongodb - Mongodb - 尝试进一步过滤到文档的子数组
- php - 如何使用 php 将数据库值从一个页面动态传递到另一个页面?
- java - 在Java中不使用数组按名称排序字符串
- flutter - 在 Flutter 中不选择照片的图库退出应用程序
- java - 在文本文件JAVA中查找字符串