2016-03-09 3 views
1

Например, если здесьКак создать столбец индекса на основе другого столбца

Student  Course 
--------------------------- 
student 1 |  Math 
-------------------------- 
student 1 |  English 
-------------------------- 
student 1 |  Art 
-------------------------- 
student 2 |  Math 
-------------------------- 
student 2 |  Economics 
-------------------------- 
student 3 |  Math 
-------------------------- 
student 3 |  English 
-------------------------- 

Как бы я хотел, чтобы создать столбец индекса курсов, основанных на студента, как этот

Student  Course  Index 
-------------------------------------------- 
student 1 |  Math  | 1 
-------------------------------------------- 
student 1 |  English | 2 
-------------------------------------------- 
student 1 |  Art  | 3 
-------------------------------------------- 
student 2 |  Math  | 1 
-------------------------------------------- 
student 2 |  Economics | 2 
-------------------------------------------- 
student 3 |  Math  | 1 
-------------------------------------------- 
student 3 |  English | 2 
-------------------------------------------- 

Так в основном 3-й столбец во второй таблице - это индекс/последовательность курса для каждого учащегося, но я хочу, чтобы вторая таблица стала запросом ко второй таблице (в Oracle), просто не может найти решение. Я могу сделать только сумму, но не индекс.

+0

Имеет ли порядок прохождения курсов на одного студента? –

ответ

3

ROW_NUMBER() является то, что вы ищете

SELECT Student 
     ,Course 
     ,ROW_NUMBER() OVER (PARTITION BY Student ORDER BY Course DESC) AS "Index" 
FROM your_table; 
+0

Afaik вам нужно указать «Индекс», так как это ключевое слово. –

+0

True @JoachimIsaksson. Ред. – sqluser

+4

Мне нужно научиться печатать быстрее .... –

3

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

select student, course, 
    Row_number() over (partition by student order by course) 
from the_table 
Смежные вопросы