Предполагая, что время перерыва всегда между 11:00 и 13:00, вы можете сделать что-то вроде ниже. По сути, используйте CTE для изготовления дополнительного столбца «BreakTime» на основе некоторой логики.
Чтобы запрос работал с вашими данными, показанными за 12 часов, я сделал (плохие) предположения в логике, что все, что между 11:00 и 13:00 или 0:00 и 1:00 перерыв В вашей реальной системе вы должны использовать 24-часовое время, чтобы у вас не было двусмысленности AM / PM. Кроме того, я не уверен, что вам нужно 2 отдельных столбца для даты и времени.
Но в любом случае, поскольку это просто пример кода для отображения запроса, я оставил его в покое.
Вот полный пример с тестовой таблицей и вашими данными:
* Обновлен для использования производной таблицы для SQL 2000 вместо CTE *
CREATE TABLE [dbo].[MyTable]
(
ID nvarchar(5),
MyDate date,
MyTime time
)
insert into MyTable (ID, MyDate, MyTime) values ('001', '12/01/2011', '08:00:00')
insert into MyTable (ID, MyDate, MyTime) values ('001', '12/01/2011', '08:30:00')
insert into MyTable (ID, MyDate, MyTime) values ('001', '12/01/2011', '11:30:00')
insert into MyTable (ID, MyDate, MyTime) values ('001', '12/01/2011', '12:35:00')
insert into MyTable (ID, MyDate, MyTime) values ('001', '12/01/2011', '03:30:00')
insert into MyTable (ID, MyDate, MyTime) values ('001', '12/01/2011', '04:30:00')
insert into MyTable (ID, MyDate, MyTime) values ('002', '12/01/2011', '08:30:00')
insert into MyTable (ID, MyDate, MyTime) values ('002', '12/01/2011', '09:30:00')
select
ID,
MyDate,
min(MyTime) as intime,
max(MyTime) as outtime,
min(BreakTime) as break_intime,
max(BreakTime) as break_outtime
FROM
(
SELECT *,
CASE
WHEN (MyTime > '11:00:00' and MyTime < '13:00:00') THEN MyTime
WHEN (MyTime > '0:00:00' and MyTime < '1:00:00') THEN MyTime
ELSE null
END AS BreakTime
from MyTable
) as DerivedTable
group by ID, MyDate
И вывод:
ID MyDate intime outtime break_intime break_outtime
001 2011-12-01 03:30:00.0000000 12:35:00.0000000 11:30:00.0000000 12:35:00.0000000
002 2011-12-01 08:30:00.0000000 09:30:00.0000000 NULL NULL