У меня есть таблица с данными, связанными с аварийными инцидентами. Я хочу сравнить, сколько инцидентов перекрывается (по времени). Я знаю, что база данных по сути неупорядочен, но у меня есть время начала (и окончания) инцидента, поэтому я могу упорядочить записи по времени.Сравнить данные в таблице
Я думаю, что конечным результатом будет набор результатов, в котором была бы каждая запись и дополнительное поле, которое указывало бы, что оно перекрывает любые инциденты (0 для none, 1 для одного перекрытия, 2 для двух перекрытий ...). Исторически существует конечное число перекрытий (6 - текущий максимум), но можно было бы иметь больше.
В настоящее время я делаю этот тип анализа в Excel со вспомогательным столбцом, который сравнивает текущую запись с предыдущими записями, чтобы определить, есть ли перекрытие (или сколько), и оно работает нормально, но похоже, что я должен быть в состоянии выполнить это строго в SQL.
EDIT: Вот пример из Excel, но данные хранятся в одной таблице SQL. У меня есть admin priveleges для базы данных, поэтому я могу реализовать практически любое решение, за исключением изменения структуры базы данных (ее системы COTS). Я включил формулу для столбца перекрытия. Кроме того, я остановил формулу выборки с двумя перекрытиями, но я буду учитывать больше, когда буду применять ответ.
Incident Start End Overlap Overlap Formula
1 2012-01-01 07:00 2012-01-01 08:00
2 2012-01-02 07:00 2012-01-02 08:00 0 =IF(C2>B3,1,0)
3 2012-01-02 07:30 2012-01-02 08:30 1 =IF(C3>B4,IF(C2>B4,2,1),0)
4 2012-01-03 07:00 2012-01-03 08:00 0 =IF(C4>B5,IF(C3>B5,2,1),0)
5 2012-01-04 07:00 2012-01-04 08:00 0 =IF(C5>B6,IF(C4>B6,2,1),0)
6 2012-01-04 07:30 2012-01-04 08:30 1 =IF(C6>B7,IF(C5>B7,2,1),0)
7 2012-01-04 07:45 2012-01-04 08:45 2 =IF(C7>B8,IF(C6>B8,2,1),0)
8 2012-01-04 08:45 2012-01-04 09:45 0 =IF(C8>B9,IF(C7>B9,2,1),0)
9 2012-01-05 07:00 2012-01-05 08:00 0 =IF(C9>B10,IF(C8>B10,2,1),0)
Можете ли вы показать несколько строк данных образца и желаемых результатов? Затем мы можем построить полезный ответ вместо угадывания в схеме/данных и дать вам запросы с именами таблиц и столбцов, такими как foo и bar. Кроме того, публикация вашей функции Excel может быть полезной, чтобы точно увидеть, что вы делаете. –
Я сейчас ухожу от своего стола, но добавлю некоторые данные, когда вернусь. Thx – dav