Home Forums SQL Server 7,2000 T-SQL Combine overlapping datetime to return single overlapping range record RE: Combine overlapping datetime to return single overlapping range record

  • Hi Steve,

    I haven't tested it on your data, but I guess you need to add an extra employeeID join condition to all your joins:

    SELECT

    s1.EmployeeId,

    s1.LogInTime,

    MIN(t1.LogOutTime) AS LogOutTime

    FROM Overlapping s1

    INNER JOIN Overlapping t1 ON s1.employeeID = t1.employeeID and s1.LogInTime <= t1.LogOutTime

    AND NOT EXISTS(SELECT * FROM Overlapping t2

    WHERE t1.employeeID = t2.employeeID and t1.LogOutTime >= t2.LogInTime AND t1.LogOutTime < t2.LogOutTime)

    WHERE NOT EXISTS(SELECT * FROM Overlapping s2

    WHERE s1.employeeID = s2.employeeID and s1.LogInTime > s2.LogInTime AND s1.LogInTime <= s2.LogOutTime)

    GROUP BY s1.EmployeeId,s1.LogInTime

    ORDER BY s1.LogInTime

    Cheers,

    Norbert