SQL-запрос для отображения промежутков между несколькими диапазонами дат

Я работаю над проектом SSRS/SQL и пытаюсь написать запрос, чтобы получить промежутки между датами, и я совершенно не понимаю, как напишите это. В основном у нас есть ряд устройств, которые можно запланировать для использования, и мне нужен отчет, чтобы показать, когда они не используются.

У меня есть таблица с идентификатором устройства, временем начала и окончания события, мне нужно выполнить запрос, чтобы получить время между этими событиями для каждого устройства, но я не совсем уверен, как это сделать.

Например:

Device 1 Event A runs from `01/01/2012 08:00 - 01/01/2012 10:00`
Device 1 Event B runs from `01/01/2012 18:00 - 01/01/2012 20:00`    
Device 1 Event C runs from `02/01/2012 18:00 - 02/01/2012 20:00`    
Device 2 Event A runs from `01/01/2012 08:00 - 01/01/2012 10:00`
Device 2 Event B runs from `01/01/2012 18:00 - 01/01/2012 20:00`

Мой запрос должен иметь результат

`Device 1 01/01/2012 10:00 - 01/01/2012 18:00`
`Device 1 01/01/2012 20:00 - 02/01/2012 18:00`
`Device 2 01/01/2012 10:00 - 01/01/2012 18:00`

В среднем в этой таблице будет около 4–5 устройств и, возможно, 200–300+ событий.

Обновления:

Хорошо, я обновлю это, чтобы попытаться дать немного больше информации, поскольку я, кажется, не слишком хорошо это объяснил (извините!)

Я имею дело с таблицей, в которой есть детали для События. Каждое событие — это бронирование авиасимулятора. У нас есть несколько авиасимуляторов (обозначенных в таблице как устройства), и мы пытаемся создать отчет SSRS, который мы можем предоставить клиенту, чтобы показать дни / время каждый сим доступен.

Поэтому я передам параметр даты начала/окончания и выберу все доступные места между этими датами. Затем результаты должны отображаться примерно так:

Device   Available_From       Available_To
 1       01/01/2012 10:00    01/01/2012 18:00`
 1       01/01/2012 20:00    02/01/2012 18:00`
 2       01/01/2012 10:00    01/01/2012 18:00`

Также события могут иногда перекрываться, хотя это очень редко и из-за неверных данных, не имеет значения, если событие на одном устройстве перекрывает событие на другом устройстве, поскольку мне нужно знать доступность. для каждого устройства отдельно.

15
задан Purplegoldfish 8 March 2012 в 11:25
поделиться