Я работаю над проектом 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`
Также события могут иногда перекрываться, хотя это очень редко и из-за неверных данных, не имеет значения, если событие на одном устройстве перекрывает событие на другом устройстве, поскольку мне нужно знать доступность. для каждого устройства отдельно.