2015-02-03 2 views
-2

У меня есть несколько записей следующим образом:как получить последовательность в запросе для столбца

column_1  column_2  column_3 column_4 
abc   xyz   sra   123 
abc   xyz   sra   234 
def   gth   har   678 
def   gts   har   965 
def   gts   har   376 
xyz   wxyz   sra   567 
xyz   wxyz   sra   734 
abc   xyz   har   26 
abc   xyz   har   24 

Я хочу запрос для отображения, как показано ниже, с помощью пла SQL аналитических функций колонки 5 следует производить последовательность:

column_1  column_2  column_3 column_4 coulmn_5 
abc   xyz   sra   123  1 
abc   xyz   sra   234  1 
abc   xyz   har   26  2 
abc   xyz   har   24  2 
def   gth   har   678  3 
def   gts   har   965  3 
def   gts   har   376  3 
xyz   wxyz   sra   567  4 
xyz   wxyz   sra   734  4 
+0

Что вы пробовали? из чего получается 'column_5'? Вы должны быть более конкретными – DLeh

+0

Почему, по-вашему, вам нужна хранимая процедура? Вам также нужно объяснить, что такое логика нумерации в 'column_5'. –

ответ

4

Вы не объяснили, что хотите, поэтому я должен угадать.

select column_1, 
     column_2, 
     column_3, 
     column_4, 
     dense_rank() over (order by column_1, column_3) as column_5 
from the_table 
order by column_1, column_4 

Это предполагает, что abdc и abcd в данном образце опечатка и должна быть на самом деле два раза abcd. Если это не опечатка, то функция окна может, вероятно, следует изменить, чтобы использовать order by column_3

+0

Да, вы правы – RezaRahmati

+0

У меня уже есть этот вопрос до вашего ответа. Это не работает –

+0

Есть дубликаты для column_1 поэтому этот запрос не work.select column_1, column_2, column_3, column_4, DENSE_RANK() по (порядка по column_1, column_2, column_3), как column_5 из the_table работает. Спасибо за ответ –

0

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

SELECT column_1,column_2,column_3,column_4,DENSE_RANK() WITHIN GROUP 
    (PARTITION BY column_1 ORDER BY column_1) "column_5" 
Смежные вопросы