Аналитические функции SQL - Как присвоить номер разделу? - PullRequest
2 голосов
/ 30 мая 2011

Я использую Oracle.

Предположим, у меня есть таблица с этим примером, случайным образом, с содержимым:

columnA     | columnB  | content
--------------------------------
AfBkxZ      | 292      | a
LDglkK      | 181      | b
AfBkxZ      | 51       | c
AfBkxZ      | 315      | d
LDglkK      | 808      | e
Cee89g      | 1        | f

Я хотел бы иметь представление, внутри которого у меня есть уникальныйчисло для каждого значения в столбце A и номер записи в строках, для которых это значение имеет столбец.

Требуемый результат на основе приведенных выше примеров данных:

Group_number | Record_number | columnB | content
------------------------------------------------
1            | 2             | 292     | a             (1.2)
3            | 1             | 181     | b             (3.1)
1            | 1             | 51      | c             (1.1)
1            | 3             | 315     | d             (1.3)
3            | 2             | 808     | e             (3.2)
2            | 1             | 1       | f             (2.1)

Я могу получить record_number сrow_number() over (partition by columnA order by columnB asc).

Как получить group_number, который на самом деле является дружественным последовательным псевдонимом для старого columnA?

Спасибо.

1 Ответ

5 голосов
/ 30 мая 2011

Вы можете использовать dense_rank для нумерации столбца A:

dense_rank() over (order by columnA)
...