Я работаю над проектом SSRS/SQL и пытаюсь написать запрос, чтобы получить промежутки между датами, и я полностью потерял, как писать это. В основном у нас есть несколько устройств, которые могут быть запланированы для использования, и мне нужно отчет, чтобы показать, когда они не используются.
У меня есть таблица с идентификатором устройства, EventStart и EventEnd раз, мне нужно запустить запрос, чтобы получить время между этими событиями для каждого устройства, но я не совсем уверен, как это сделать.
Например:
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`
Также события могут иногда перекрываться, хотя это очень редко и из-за плохих данных, не имеет значения, что событие на одном устройстве перекрывает событие на другом устройстве, поскольку мне нужно знать доступность для каждого устройства отдельно.