Sql server SQL合并数据以获取时间线

Sql server SQL合并数据以获取时间线,sql-server,sql-server-2016,Sql Server,Sql Server 2016,我需要合并来自不同系统的两组数据。一个来自门fob安全系统,另一个来自HR假期系统 最终目标是创建一个准确的时间线,记录人们在大楼里呆了多长时间——我面临的困难是半天 因此,一名员工在08:25进入大楼,12:45离开。人力资源系统显示从12:00到16:00的半天时间(由于人力资源系统限制在较大的时间间隔内,因此时间不会一直叠加) 第一个结果是08:25开始和16:00结束(10月1日) 第二个结果是08:00开始和16:12结束(10月2日) 。。但假期可以是上午和下午。因此,情况可能正好相

我需要合并来自不同系统的两组数据。一个来自门fob安全系统,另一个来自HR假期系统

最终目标是创建一个准确的时间线,记录人们在大楼里呆了多长时间——我面临的困难是半天

因此,一名员工在08:25进入大楼,12:45离开。人力资源系统显示从12:00到16:00的半天时间(由于人力资源系统限制在较大的时间间隔内,因此时间不会一直叠加)

第一个结果是08:25开始和16:00结束(10月1日)

第二个结果是08:00开始和16:12结束(10月2日)

。。但假期可以是上午和下午。因此,情况可能正好相反。我一直在努力解决不同的
MAX
min
问题,并试图在
时对
进行排序
案例,但无法始终正确处理这两种情况

下面是一个粗略的数据示例

SELECT 123456 AS EmployeeID
        , 'John Jones' AS EmployeeName
        , '01-Oct-2018' AS DateEvent
        , '08:25:00' AS EnterTime
        , '12:45:00' AS LeaveTime
        , 'DOOR' AS EventType
UNION ALL
SELECT 123456 AS EmployeeID
        , 'John Jones' AS EmployeeName
        , '01-Oct-2018' AS DateEvent
        , '12:00:00' AS StartTime
        , '16:00:00' AS EndTime
        , 'HOL' AS EventType
UNION ALL
SELECT 123456 AS EmployeeID
        , 'John Jones' AS EmployeeName
        , '02-Oct-2018' AS DateEvent
        , '12:30:00' AS EnterTime
        , '16:12:00' AS LeaveTime
        , 'DOOR' AS EventType
UNION ALL
SELECT 123456 AS EmployeeID
        , 'John Jones' AS EmployeeName
        , '02-Oct-2018' AS DateEvent
        , '08:00:00' AS StartTime
        , '12:00:00' AS EndTime
        , 'HLL' AS EventType

请查看下面的查询

select * into #tempEvent from(
SELECT 123456 AS EmployeeID
        , 'John Jones' AS EmployeeName
        , '01-Oct-2018' AS DateEvent
        , '08:25:00' AS EnterTime
        , '12:45:00' AS LeaveTime
        , 'DOOR' AS EventType
UNION ALL
SELECT 123456 AS EmployeeID
        , 'John Jones' AS EmployeeName
        , '01-Oct-2018' AS DateEvent
        , '12:00:00' AS StartTime
        , '16:00:00' AS EndTime
        , 'HOL' AS EventType
UNION ALL
SELECT 123456 AS EmployeeID
        , 'John Jones' AS EmployeeName
        , '02-Oct-2018' AS DateEvent
        , '12:30:00' AS EnterTime
        , '16:12:00' AS LeaveTime
        , 'DOOR' AS EventType
UNION ALL
SELECT 123456 AS EmployeeID
        , 'John Jones' AS EmployeeName
        , '02-Oct-2018' AS DateEvent
        , '08:00:00' AS StartTime
        , '12:00:00' AS EndTime
        , 'HLL' AS EventType
)event

select * from #tempEvent

select EmployeeID,  EmployeeName, dateevent, min(entertime) as start, max(leavetime) as finish 
from #tempEvent
group by EmployeeID,    EmployeeName, dateevent
输出如下所示

EmployeeID  EmployeeName    dateevent   start       finish
123456      John Jones      01-Oct-2018 08:25:00    16:00:00
123456      John Jones      02-Oct-2018 08:00:00    16:12:00

预期结果是什么样子?@Squirrel-它将是第一个和最后一个条目,无论是第一个还是最后一个条目。因此,对于10月1日的示例,第一次使用门日志,最后一次使用假日系统。那么,第二种情况也是如此。。。。如果这有意义。您能告诉我们您希望结果是什么样子吗?编辑它以突出显示所需结果并使其更简单…请共享您的表结构和预期输出,因为它将比当前文本中的文本要求更直观。