-- -- Last possible start time based off a 210 minute requirement -- declare @LastPossibleStartTime varchar(5) = convert(varchar(10),dateadd(mi,-210,'18:30'),108) declare @CloseTime varchar(5)='18:30' declare @Cases Table ( meetingnumber int, begintime datetime, endtime datetime, JustDate varchar(10), RoomID int, NextCaseStarts datetime, GapMinutes int ) insert into @Cases (meetingnumber,begintime,endtime,JustDate,RoomID,NextCaseStarts,GapMinutes ) Select meetingnumber, dateadd(mi,1,begintime), dateadd(mi,-1,endtime), CONVERT(varchar(10),begintime,101), RoomID, (Select top 1 m.begintime FROM dbo.meetings m where m.roomid=meetings.roomid AND m.begintime > meetings.endtime AND CONVERT(varchar(10),m.begintime,101)=CONVERT(varchar(10),meetings.begintime,101) order by m.begintime) as NextCaseInRoom, isnull((Select top 1 datediff(mi,meetings.endtime,m.begintime) FROM dbo.meetings m where m.roomid=meetings.roomid AND m.begintime > meetings.endtime AND CONVERT(varchar(10),m.begintime,101)=CONVERT(varchar(10),meetings.begintime,101) order by m.begintime),0) as GapMinutes FROM dbo.meetings WHERE deptid=@FacilityID and iscancelled=0 and begintime between @FirstDate and @EndDate ORDER by begintime,roomid select * from @CasesCURRENT Results
meetingnumber begintime endtime Justdate roomID NextCaseStarts GapMinutes 1 01/18/2010 06:01 01/18/2010 09:59 01/18/2010 141 01/18/2010 14:00 240 2 01/18/2010 06:01 01/18/2010 09:59 01/18/2010 142 NULL 0