Помогите разобраться.
Есть таблица, которая содержит данные типа:
code | mod_date
-------------------------------
1 | 2015-10-01 10:00:00
1 | 2015-10-13 22:01:00
2 | 2015-10-13 23:10:00
2 | 2015-10-29 14:00:00
1 | 2015-10-30 11:01:00
1 | 2015-11-01 06:50:00
3 | 2015-11-03 10:00:00
Необходимо написать запрос, который будет возвращать:
code | mod_date | n_date
-------------------------------------------------------
1 | 2015-10-01 10:00:00 | 2015-10-01 10:00:00
1 | 2015-10-13 22:01:00 | 2015-10-01 10:00:00
2 | 2015-10-13 23:10:00 | 2015-10-13 23:10:00
2 | 2015-10-29 14:00:00 | 2015-10-13 23:10:00
1 | 2015-10-30 11:01:00 | 2015-10-30 11:01:00
1 | 2015-11-01 06:50:00 | 2015-10-30 11:01:00
3 | 2015-11-03 10:00:00 | 2015-11-03 10:00:00
Первое не правильное решение, что пришло в голову это:
first_value(mod_date) OVER(PARTITION BY code_org ORDER BY mod_date)
Но оно не будет работать, если нужно учесть разрывы в code.
Т.е., когда у нас происходит разрыв code, например в code = 1 и появляется code = 2, то значение mod_date нужно брать уже не "2015-10-01 10:00:00", а "2015-10-30 11:01:00".