номер одной и той же записи до этой строки - PullRequest
0 голосов
/ 19 июля 2011

Можно ли получить текущий номер одной и той же записи для каждой строки с помощью oracle pl / sql?

Например, У меня есть таблица классов, которая состоит из столбцов id, name, age

Я хочу, чтобы последовательность учеников с одинаковыми именами и возрастом вошла в класс, предполагая, что идентификатор заменяется без изменения структуры данных.

Спасибо.

С уважением,

Jim

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Не уверен, что я полностью понимаю, что вы просите; у вас странный поворот фразы. Пример входных данных и ожидаемого результата всегда полезен.

Возможно, что-то вроде этого:

select id, name, age
from   your_table
where (name, age) in 
   ( select name. age
     from your_table
     group by name, age
     having count(id) > 1 )
order by name, age, id
/

Вы можете решить это с помощью аналитики. Однако вам все еще нужен внешний запрос для фильтрации записей, которые не дублируются, поэтому я не уверен, что вы получите:

select * from (
    select id, name, age
            , count(id) over (partition by name, age) as dup_count
    from   your_table )
where dup_count > 1
order by name, age, id
/
0 голосов
/ 19 июля 2011

Я тоже не уверен, но мне кажется, что-то, связанное с аналитическими функциями.Возьмите это в качестве примера, посмотрите на столбец srlno, рассчитанный с использованием аналитических функций:

SELECT empno, deptno, hiredate,
ROW_NUMBER( ) OVER (PARTITION BY
deptno ORDER BY hiredate
NULLS LAST) SRLNO
FROM emp
WHERE deptno IN (10, 20)
ORDER BY deptno, SRLNO;

EMPNO  DEPTNO HIREDATE       SRLNO
------ ------- --------- ----------
  7782      10 09-JUN-81          1
  7839      10 17-NOV-81          2
  7934      10 23-JAN-82          3
  7369      20 17-DEC-80          1
  7566      20 02-APR-81          2
  7902      20 03-DEC-81          3
  7788      20 09-DEC-82          4
  7876      20 12-JAN-83          5

Подробнее об аналитических функциях: http://www.orafaq.com/node/55

Помните, это лучший подход, если вы можете достичь своихцель с SQL вместо PL / SQL.

...