К сожалению, я не думаю, что вы можете сделать это с помощью стандартного запроса SQL, и причина в том, что ваш алгоритм не ориентирован на множество. Ваш примерный набор данных иллюстрирует это - у вас есть первая запись 'P', отображаемая между записями 0900 и 1030, но было бы также целесообразно поместить ее между записями 1010 и 1045, основываясь на ваших критериях. Если правильно расположить его в позиции, которую вы показываете, вам нужно изменить свое состояние так, чтобы оно было таким: «поместите каждую строку из # 2 между первыми двумя строками в # 1, которые заключают ее в скобки во времени», где определено «first» по критериям сортировки №1.
В результате этого типа установки, скорее всего, заставит вас в решение на основе курсора. Возможно, вам удастся избежать этого, если вы сможете определить составное значение для заказа, но исходя из того, что у вас есть выше, я не вижу, что это может быть.