Hi mahesh213,
Refer below query.
SQL
CREATE TABLE #Test(Id INT,Name CHAR(1),logInTime DATETIME,Logouttime DATETIME)
INSERT INTO #Test VALUES(1,'a','3-6-2020 09:45:12','3-6-2020 12:23:34')
INSERT INTO #Test VALUES(1,'a','3-6-2020 14:10:45','3-6-2020 18:34:20')
INSERT INTO #Test VALUES(1,'a','5-6-2020 10:20:13','5-6-2020 13:23:45')
INSERT INTO #Test VALUES(1,'a','5-6-2020 14:12:13','5-6-2020 14:47:10')
INSERT INTO #Test VALUES(2,'b','3-6-2020 10:45:12','3-6-2020 12:35:34')
INSERT INTO #Test VALUES(2,'b','3-6-2020 14:14:45','3-6-2020 18:04:20')
INSERT INTO #Test VALUES(2,'b','10-6-2020 10:20:13','10-6-2020 13:23:45')
INSERT INTO #Test VALUES(2,'b','10-6-2020 14:12:13','10-6-2020 16:47:10')
SELECT Id,
Name,
CONVERT(DATE,logInTime) 'Date',
CASE WHEN SUM(DATEDIFF(SECOND,logInTime,Logouttime)) / 60 / 60 / 5 >0 THEN 'Present'
ELSE 'Absent'
END 'Status'
FROm #Test
GROUP BY Id,Name,CONVERT(DATE,logInTime)
DROP TABLE #Test
Output
Id |
Name |
Date |
Status |
1 |
a |
2020-03-06 |
Present |
1 |
a |
2020-05-06 |
Absent |
2 |
b |
2020-03-06 |
Present |
2 |
b |
2020-10-06 |
Present |