Используя MS Access SQL, как мне удалить строки с дублирующимися значениями только в одном столбце? - PullRequest
0 голосов
/ 04 апреля 2020

Используя MS Access SQL, я пытаюсь выяснить, как удалять строки с дублирующимися значениями в одном столбце .

Пример данных:

Department      | Job Category        | Name | Requestor ID
Medical Affairs | Vice President      | Kim  | 123
Medical Affairs | President           | Abe  | 123
Nursing         | Sr Vice President   | Bob  | 456
Nursing         | Exec Vice President | Jim  | 456
Patient Care    | President           | Sam  | 456

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

Результаты:

Department      | Job Category        | Name | Requestor ID
Medical Affairs | Vice President      | Kim  | 123
Nursing         | Sr Vice President   | Bob  | 456

Я довольно новичок в MS Access SQL так что я даже не знаю с чего начать. Я ценю всю помощь, которую я могу получить.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Я понял, что могу получить желаемые результаты, с помощью приведенного ниже кода:

SELECT * 
FROM TableA 

UNION 

SELECT * 
FROM TableA AS a 
RIGHT JOIN TableB AS b 
ON a.[Requestor ID] = b.[Requestor ID] 
WHERE a.[Requestor ID] IS NULL

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

Приведенный ниже код вызвал проблему, с которой я столкнулся, в результате чего я получил дубликат ИД запрашивающей стороны s с различными Отделами , Категории заданий и Имена с тех пор, как я не удалось отфильтровать строки с идентификаторами запросчиков , которые уже были в моей исходной таблице ( TableA ).

SELECT *
FROM TableA

UNION

SELECT *
FROM TableB

Спасибо всем за помощь!

0 голосов
/ 04 апреля 2020

Откуда вы знаете, что это «самая низкая» категория работы?

Ну, вы можете сделать что-то вроде этого:

select e.*
from example as e
where e.jobcategory <> (select top (1) e2.jobcategory
                        from example e2
                        where e2.requestorid = e.requestorid
                        order by switch(jobcategory = 'President', 1,
                                        jobcategory = 'Exec Vice President', 2,
                                        jobcategory = 'Sr Vice President', 3,
                                        jobcategory = 'Vice President', 4,
                                        ) desc
                       );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...