2016-10-14 2 views
1

Я застрял в запросе, в котором мне нужно изменить rownum или любой запущенный серийный номер. возвращается к исходному значению, как только обнаруживает смену текста второй колонки. Я использую Oracle 11g.SQL Query, чтобы изменить rownum как текстовые изменения в Oracle

Для примера. Мои Данные

________ 
    | EMP_CD | 
    |--------| 
    | D123 | 
    |--------| 
    | D123 | 
    |--------| 
    | D123 | 
    |--------| 
    | F743 | 
    |--------| 
    | F743 | 
    |________| 

Так что теперь я ожидаю это

_______ ________ 
| SR NO | EMP_CD | 
|-------|--------| 
| 1 | D123 | 
|-------|--------| 
| 2 | D123 | 
|-------|--------| 
| 3 | D123 | 
|-------|--------| 
| 1 | F743 | 
|-------|--------| 
| 2 | F743 | 
|_______|________| 

ответ

2
select row_number() over (partition by emp_cd order by null) as sr_no, emp_cd 
from your_table 
order by emp_cd, sr_no; 

ORDER BY не является обязательным.

+0

Большое спасибо @mathguy – Omkar

1

Вы можете использовать аналитическую функцию row_number():

SELECT ROW_NUMBER() OVER (PARTITION BY emp_cd ORDER BY 1) AS sr_no, emp_cd 
FROM mytable 
+1

Благодаря @Mureinik! Получил то, что хотел. – Omkar

0

Вы можете использовать аналитическую функцию row_number()