@bora_bora

Возможно ли решить данную задачу с помощью Window Functions?

Помогите разобраться.

Есть таблица, которая содержит данные типа:
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".
  • Вопрос задан
  • 180 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы