Аналитические функции и иерархические запросы работают с несколькими строками таблицы Oracle. Конструкция SELECT MODEL дает еще большие возможности. Предположим, в таблицу базы данных записываются документы, которые поступают пачками, при этом каждый документ в пределах пачки нумерован, но номер пачки по каким-то причинам не регистрируется. Т.е. мы имеем лишь монотонный непрерывный идентификатор строки и номер документа в пачке. Имитируем такие данные. Три вложенных иерархических запроса генерируют номера документов в трех пачках, охватывающий запрос генерирует идентификаторы строк: select rownum as id, doc_no from
(
-- Первая пачка:
select level as doc_no from dual connect by level <= 3
union all
-- Вторая пачка:
select level as doc_no from dual connect by level <= 5
union all
-- Третья пачка:
select level as doc_no from dual connect by level <= 2
)
; -- Первая пачка:
1 1
2 2
3 3
-- Вторая пачка:
4 1
5 2
6 3
7 4
8 5
-- Третья пачка:
9 1
10 2 И вот теперь при наличии таких данных нам н