Группировать строки по непрерывным диапазонам дат для групп значений
Рассмотрим таблицуT
, заказанCol1, Col2, Date1, Date2
:
Col1 Col2 Date1 Date2 rate
ABC 123 11/4/2014 11/5/2014 -90
ABC 123 11/4/2014 11/6/2014 -55
ABC 123 11/4/2014 11/7/2014 -90
ABC 123 11/4/2014 11/10/2014 -90
Я хочу сгруппировать данные так, чтобы изменения были легко проверены / уменьшены повторения, поэтому у меня есть
Col1 Col2 Date1 start_Date2 end_Date2 rate
ABC 123 11/4/2014 11/5/2014 11/5/2014 -90
ABC 123 11/4/2014 11/6/2014 11/6/2014 -55
ABC 123 11/4/2014 11/7/2014 11/10/2014 -90
Я могу легко сделать это, если я могу получить другой столбец с номерами строк, как1 2 3 3
(важно только то, что числа различны), а затемGROUP BY
этот столбец.
Моя попытка запроса:
SELECT *, DENSE_RANK() OVER (ORDER BY rate) island
FROM T
ORDER BY Date2
не дает то, что я ищу:
Col1 Col2 Date1 Date2 rate island
ABC 123 11/4/2014 11/5/2014 -90 1
ABC 123 11/4/2014 11/6/2014 -55 2
ABC 123 11/4/2014 11/7/2014 -90 1
ABC 123 11/4/2014 11/10/2014 -90 1
Я хочу, чтобы запрос распознал вторую группу-90
Значения следует рассматривать как новую группу, так как они появились после группы с другимrate
.
SQL-тэг [gaps-and-Islands] был довольно полезен, но я не совсем могу понять, как справиться, когда скорость возвращается к предыдущему значению. Как мне изменить мой запрос?