Как получить дубликаты имен сотрудников, которые имеют несколько номеров сотрудников - PullRequest
1 голос
/ 25 октября 2011

Я использую Oracle 10g.

Если у меня есть следующие повторяющиеся строки ( Тот же сотрудник с двумя номерами сотрудников ):

Employee_No      Employee_Name      ID_NO
----------------------------------------------
0002345          John Debb          100345642
0030988          John Debb          100345642
----------------------------------------------

я хочуполучить результат как:

Employee_No_1      Employee_No_2     Employee Name    ID_NO
----------------------------------------------------------------
0002345            0030988           John Debb        100345642
----------------------------------------------------------------

Возможно ли это сделать в SQL?или для этого нужен PL / SQL?и какой будет запрос?

Ответы [ 3 ]

6 голосов
/ 25 октября 2011
SELECT MIN(Employee_no), MAX(employee_no), Employee_name, id_no
FROM Employee
GROUP BY Employee_name, id_no
HAVING MIN(employee_no) <> MAX(employee_no)

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

3 голосов
/ 25 октября 2011

Не совсем в запрошенном формате, но это будет обрабатывать случай, когда может быть больше, чем 2 дубликата.

SELECT e.Employee_No, e.Employee_Name, e.ID_NO
    FROM (SELECT Employee_Name, ID_NO
              FROM Employee
              GROUP BY Employee_Name, ID_NO
              HAVING COUNT(*) > 1) q
        INNER JOIN Employee e
            ON q.Employee_Name = e.Employee_Name
                AND q.ID_NO = e.ID_NO
    ORDER BY e.Employee_Name, e.ID_NO, e.Employee_No
1 голос
/ 25 октября 2011

Запрос, как показано ниже,

select e1.employee_no, e2.employee_no, e1.employee_name, e1.id_no
from employee e1
join employee e2
    on e1.id_no = e2.id_no
where e1.employee_no < e2.employee_no
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...