Если вы ищете общее время, это сделает это.
DECLARE @testData table (
Punchtime datetime, empcode char(3), isInPunch char(1))
INSERT INTO @testData
Values
('10:01 AM ', '(A)', 'T'),
('12:03 PM', '(A)', 'F'),
('01:05 PM', '(A)', 'T'),
('07:14 PM', '(A)', 'F'),
('10:32 AM', '(B)', 'T')
;WITH CTE as(
SELECT
DENSE_RANK() over (Partition by empcode , isInPunch Order by punchTime) id,
Punchtime,
empcode,
isInPunch
FROM
@testData
WHERE
empcode = '(A)'
)
SELECT
Cast(cast(sum(
cast(outTime.punchTime as float) - cast(inTime.punchTime as float)
)as datetime) as time)
FROM
CTE inTime
INNER JOIN CTE outTime
ON inTime.empcode = outTime.empcode
AND inTime.id = outTime.id
AND inTime.isInPunch = 'T'
and outTime.isInPunch = 'F'