Мне нужно пометить предыдущие строки, где значение отличается и упорядочено по дате. Я пытался использовать row_number () с разделом, но я не возвращаю ожидаемые результаты.
Таблица:
Product ID Price validfrom validto
123 0.9 27/07/2016 10/08/2016
123 0.9 11/08/2016 24/04/2017
123 0.75 25/04/2017 23/10/2017
123 0.75 24/10/2017 24/10/2017
123 0.8 25/10/2017 02/01/2018
123 0.9 03/01/2018 21/03/2019
123 0.9 22/03/2019 17/10/2019
123 0.9 18/10/2019 11/11/2019
Ожидаемые результаты:
Product ID Price validfrom validto rownum
123 0.9 27/07/2016 10/08/2016 4
123 0.9 11/08/2016 24/04/2017 4
123 0.75 25/04/2017 23/10/2017 3
123 0.75 24/10/2017 24/10/2017 3
123 0.8 25/10/2017 02/01/2018 2
123 0.9 03/01/2018 21/03/2019 1
123 0.9 22/03/2019 17/10/2019 1
123 0.9 18/10/2019 11/11/2019 1
Текущий запрос :
select *,row_number() over (partition by Product ID,Price order by validfrom desc) as rownum
from table
Текущие результаты запроса (неверно):
Product ID Price validfrom validto rownum
123 0.9 27/07/2016 10/08/2016 5
123 0.9 11/08/2016 24/04/2017 4
123 0.75 25/04/2017 23/10/2017 1
123 0.75 24/10/2017 24/10/2017 1
123 0.8 25/10/2017 02/01/2018 1
123 0.9 03/01/2018 21/03/2019 3
123 0.9 22/03/2019 17/10/2019 2
123 0.9 18/10/2019 11/11/2019 1