지금 당분간이 문제를 해결하려고했습니다. 많이 검색했지만 아무도 비슷한 문제가없는 것 같습니다. 여기두 테이블의 datetime 사이의 시간 간격을 찾습니다.
은 내가 가진 것입니다 :
Table 1/Schedule
EmployeeID, PStart, PEnd
1, 2016-07-01 08:00:00, 2016-07-01 12:00:00
1, 2016-07-01 13:00:00, 2016-07-01 17:00:00
Table 2/Bookings
EmployeeID, PStart, PEnd
1, 2016-07-01 08:00:00, 2016-07-01 08:40:00
1, 2016-07-01 09:00:00, 2016-07-01 10:10:00
1, 2016-07-01 10:30:00, 2016-07-01 11:00:00
1, 2016-07-01 13:00:00, 2016-07-01 15:00:00
1, 2016-07-01 15:00:00, 2016-07-01 15:30:00
나는이 두 테이블을 비교하고 일정 및 예약 시간 사이의 간격을 싶어. 예약되지 않은 시간. 쿼리의 속도
Result table/Not booked
EmployeeID, PStart, PEnd
1, 2016-07-01 08:40:00, 2016-07-01 09:00:00
1, 2016-07-01 10:10:00, 2016-07-01 10:30:00
1, 2016-07-01 11:00:00, 2016-07-01 12:00:00
1, 2016-07-01 15:30:00, 2016-07-01 17:00:00
될 것이라고이 예에서
은 매우 중요합니다. 직원 수는 150을 넘기 때문에 많은 행이 있습니다. 시간의 시작부터 모든 간격을 표시하는 대신 사용하려는 날짜 범위가 제한 될 수 있습니다 (예 : 2 주간 간격이 있음). 하지만 쿼리 속도에 도움이되는 경우에만 그렇습니다.
미리 감사드립니다.
감사합니다, 아담 당신이 할 수있는
이 스크립트는 정말 완벽합니다. 거의 99 %의 작업을 처리했습니다. 내가 언급 한 것을 잊어 버린 또 다른 문제가 있습니다. 때로는 일정이 8-10시에 시작하고 다른 일정은 10-12시에 시작됩니다.나는 스크립트를 실행하기 전에 그것들을 결합 할 수 있는지 궁금하다. – AdamG
원래 스크립트에서 두 가지를 바꿀 필요가 있었다. 1 전혀 예약하지 않은 스케줄을 보여주지 않았다. 2 마지막 예약이 끝났을 때 작동하지 않았다. 일정이 (내 수정으로 스크립트가 느려지므로 대체 스크립트를 제공 할 수 있다면 감사하겠습니다. 중요하지는 않습니다.) – AdamG
예약이없는 일정을 표시하도록 스크립트를 수정했습니다 (왼쪽 가입 그리고 여분의'ISNULL' 체크) 예약이 스케쥴의 끝 부분에있을 때 갭을 잡는 방법을 보여주었습니다. 그것은 모두 노조를 사용합니다 – Balah