2015-01-10 6 views
1

Моими простой запрос возвращает данные, как это:Возврат столбца с номером работает последовательность Oracle

SELECT column1, column2 FROM table1 

COLUMN1 COLUMN2 
------- ------- 
CA   A 
CA   B 
CB   C 
CB   D 

Я хочу вернуться колонка3 с этими значениями (то же значение COLUMN1, я хочу вернуть то же порядковый номер):

COLUMN3 
------- 
1 
1 
2 
2 
+2

DENSE_RANK() ... – Ben

ответ

2

Вы можете использовать analytic функцию DENSE_RANK.

 
SELECT column1, 
     column2, 
     DENSE_RANK() OVER(ORDER BY column1) as "column3" 
FROM table1 

Смотрите следующие несколько примеров - oracle-base.com/articles/misc/rank-dense-rank-first-last-analytic-functions.php#dense_rank

+1

Параметр 'PARTITION BY column1' должны быть удалены. –

+0

Я думаю, что если вы разделите столбец1, значение 'DENSE_RANK()' всегда будет 1 –

+0

Да, правильно. Столбец 1 должен быть сгруппирован вместе, а не для каждого набора значений. Обновлен мой ответ. –

2

Попробуйте этот запрос,

Select column1, column2, 
     dense_rank() over (order by column1) as column3 
from table1; 
+0

Большое вам спасибо. Он отлично поработал – stoniel2

Смежные вопросы