Refer below query.
CREATE PROCEDURE GetAttendance
@From DATE,
@To DATE,
@Id INT
AS
BEGIN
CREATE TABLE #Date (Id INT,Date DATE,Name CHAR(1),Status VARCHAR(10))
WHILE (@From <= @To)
BEGIN
IF EXISTS(SELECT * FROM Test WHERE CONVERT(DATE,logInTime) = CONVERT(DATE,@From) AND Id = @Id)
BEGIN
INSERT INTO #Date
SELECT Id,
CONVERT(DATE,logInTime),
Name,
CASE WHEN SUM(DATEDIFF(SECOND,logInTime,Logouttime)) / 60 / 60 / 5 > 0 THEN 'Present'
ELSE 'Absent'
END 'Status'
FROM #Test
WHERE CONVERT(DATE,logInTime) = CONVERT(DATE,@From) AND Id= @Id
GROUP BY Id,Name,CONVERT(DATE,logInTime)
END
ELSE
BEGIN
DECLARE @Status VARCHAR(10)
IF DATENAME(WEEKDAY, @From) = 'SATURDAY' OR DATENAME(WEEKDAY, @From) = 'SUNDAY'
SET @Status = 'Week Off'
ELSE
SET @Status = 'Absent'
DECLARE @Name CHAR(1)
SELECT @Name = Name FROM #Test WHERE Id = @Id
INSERT INTO #Date VALUES(@Id,@From,@Name,@Status)
END
SET @From = DATEADD(DAY, 1, @From)
END
SELECT * FROM #Date
DROP TABLE #Date
END