Another solution
; WITH CTE AS
(
SELECT EmployeeID
,EmployeeLoginDateTime = DATEADD(DD,DATEDIFF(DD,0,OutTab.EmployeeLoginDateTime),0)
,JobFunction = CASE WHEN JobFunction = 'Logout' THEN 1
ELSE 0
END
FROM @TableA OutTab
)
SELECT EmployeeID
, EmployeeLoginDateTime
, 'Missed LogOut' Comment
FROM CTE
GROUP BY EmployeeID , EmployeeLoginDateTime
HAVING SUM(JobFunction) = 0
This solution is definitely faster than the previous one!
Table '#32AB8735'. Scan count 2, logical reads 17, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 86 ms.
Table '#32AB8735'. Scan count 1, logical reads 1, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 65 ms.