0

使用 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

在上面的示例中,我想删除具有重复Requestor ID的行,只保留具有最低Job Category的行(即使Job Category位于不同的Department中)。这意味着当我删除我的重复项时,我只会在下面留下这些行:

结果:

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

我对 MS Access SQL 很陌生,所以我什至不知道从哪里开始。我很感激我能得到的所有帮助。

4

2 回答 2

0

你怎么知道“最低”的工作类别是什么?

好吧,你可以这样做:

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
                       );
于 2020-04-04T00:32:39.587 回答
0

我意识到我可以通过构造下面的代码得到我想要的结果:

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

通过使用此代码,我将获得唯一的Requestor ID并且不会遇到具有不同DepartmentsJob CategoriesNames的重复Requestor ID的问题。

下面的代码导致了我面临的问题,我得到了具有不同DepartmentsJob CategoriesNames的重复Requestor ID ,因为我无法过滤掉原始表( TableA)中已经存在Requestor ID的行。

SELECT *
FROM TableA

UNION

SELECT *
FROM TableB

谢谢大家,你们的帮助!

于 2020-04-06T05:17:58.500 回答