Я пытаюсь использовать PARTITION BY OVER для группировки строк по определенным столбцам. Я понимаю использование PARTITION несколько, однако я хочу «блокировать» разделы по дате. Например, если мы имеемOracle разделяет группу на дату на основе последовательности
|col1|col2 |
| A |01/JAN/2012|
| A |01/FEB/2012|
| B |01/MAR/2012|
| B |01/APR/2012|
| A |01/MAY/2012|
И я хочу разделить на col1, но я хочу, чтобы последние А быть «другими» от первых двух, как она отделена даты мудрых рядов на «B».
Если я использую;
SELECT ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2) AS RNUM, a.*
FROM table1 a;
Это даст;
|RNUM|col1|col2 |
| 1| A |01/JAN/2012|
| 2| A |01/FEB/2012|
| 3| A |01/MAY/2012|
| 1| B |01/MAR/2012|
| 2| B |01/APR/2012|
, но я действительно хочу;
|RNUM|col1|col2 |
| 1| A |01/JAN/2012|
| 2| A |01/FEB/2012|
| 1| B |01/MAR/2012|
| 2| B |01/APR/2012|
| 1| A |01/MAY/2012|
Возможно ли это с помощью PARTITION BY OVER? В настоящий момент я вернулся к использованию курсора для анализа данных и присвоения идентификатора группы, чтобы я мог разделить две последовательности «A», но это довольно медленно.
Thanks,
Оценка.
Спасибо за этого @valex это сделал что я был после. Другие решения также работали, но это было наиболее кратким – Marcus