Если я понимаю, что вы хотите мин / макс в день , то вам также нужно группировать по дням. непроверенный
select StartDTM, EndDTM, startTable.PersonID
,startTable.PersonName, startTable.TimeSheetItemID
from (
select min(StartDTM) StartDTM, PersonID, PersonName, TimeSheetItemID
from YourTable
group by convert(date,StartDTM), PersonID, TimeSheetItemID, PersonName
) startTable
full outer join (
select max(EndDTM) EndDTM, PersonID, TimeSheetItemID
from YourTable
group by convert(date,endDTM), PersonID, TimeSheetItemID
) EndTable
on startTable.PersonID = endTable.PersonID
and startTable.TimeSheetItemID = endTable.TimeSheetItemID
where convert(date,StartDTM) = convert(date,EndDTM)
order by startTable.PersonID,StartDTM
В расписаниях, которые не имеют как startDTM, так и endDTM в данный день, должны быть нулевые значения в этом запросе.
Если вас интересует любой 24-часовой период, тогда это совсем другое.