SQL:重叠记录

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

请帮助我编写以下情况的查询。

我有2张桌子

机器停机时间:

Name       Starttime                      Endtime
M1         12/15/2019  10.00          12/15/2019 14.00 

EmployeeTime:

Employee     Clockin               ClockOut     
E1          12/15/2019 09.00       12/152019 10.00

假设我将时间输入修改为:

Employee     Clockin               ClockOut     
E1      12/15/2019 12.00            12/15/2019 13.00

我如何在停机时间表的下面2个条目中插入(即,由于员工记录与停机时间记录重叠)。

机器停机时间:

Name       Starttime                      Endtime
M1         12/15/2019  10.00          12/15/2019 12.00 
M1         12/15/2019  13.00          12/15/2019 14.00 
sql overlapping
1个回答
0
投票

您可以使用工会来获取停机时间:

SELECT d.Name,d.Starttime, e.Clockin AS Endtime
FROM employee_table e 
INNER JOIN downtime_table d
ON e.Clockin BETWEEN d.Starttime AND d.Endtime
UNION ALL
SELECT d.Name,e.Clockout AS Starttime, d.Endtime
FROM employee_table e 
INNER JOIN downtime_table d
ON e.ClockOut BETWEEN d.Starttime AND d.Endtime
© www.soinside.com 2019 - 2024. All rights reserved.