Предполагая, что это одноразовый хит, который вы хотите сделать, и он не является частью какого-либо действующего производственного решения, я думаю, что единственный способ сделать это с помощью курсора.
Я не знаю Postgres, но, похоже, у них есть курсоры, которые работают аналогично MS-Sql: http://www.postgresql.org/docs/current/static/plpgsql-cursors.html
Курсоры позволяют вам «проходить» через оператор выбора, помещая значения ввременные переменные, где вы можете работать с ними.Это больше похоже на процедурное программирование.
Производительность невелика, поэтому все нормально, но она может быть более сложной (но более производительной), если у вас есть проблемы с производительностью.
Я бы начал с создания курсора для циклического перемещения по таблице, помещения кода, скорости, начальной даты и конца в переменные.(Если вы сортируете оператор выбора по коду, ставке и начальной дате, вы гарантируете, что все ваши записи будут отображаться в правильном для вас порядке.) Для каждой записи вы можете сравнить текущий код и оценку со значением в переменной, иесли они одинаковые, обновите переменную конечной даты.
Используйте 2-ую таблицу (или переменную таблицы) для результатов.Если код / скорость не совпадают с переменными, то все в переменных является кандидатом новой строки.Запишите его, затем обновите переменные новыми данными и продолжайте.
За один раз вы создадите новую таблицу.Затем вы можете удалить исходный файл и заменить его или сохранить в другом месте.