Задать вопрос
@kofon
Я человек

SQL запрос инкремент внутри группы?

Не новичок, вроде, но с таким впервые сталкиваюсь.
Даны следующие данные:
num | txt
1 | q
1 | w
1 | e
2 | a
2 | s
2 | d
3 | z
3 | x

На выходе нужно получить:
num | txt
1 | q
2 | w
3 | e
1 | a
2 | s
3 | d
1 | z
2 | x

То есть, инкрементировать данные внутри одной группы по num, но не группировать их!
Обращаю ваше внимание, второй столбец (и прочие кроме первого) не должны меняться.
Хотелось бы получить универсальный sql-запрос, но т.к. пишу на oracle, сойдёт и частный случай для него.

UPD
Здесь данные для примера, в моём случае столбцов больше, также присутствует ID
  • Вопрос задан
  • 1043 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Dronablo
Oracle performance geek
select num, txt, row_number() over (partition by num order by num) as rn from tab;

Единственное, порядок нумерации из вашего задания не ясен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Хотелось бы получить универсальный sql-запрос
У вас нет ключа. Если для него вы используете num+txt, то при изменении получите либо запрет изменения (ошибку), либо неопределённость записи (ошибка).
также присутствует ID
Стройте курсор. Определяйте переменную и начинайте считать в ней строки с 1 до изменения num.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы