【发布时间】:2017-05-12 09:20:39
【问题描述】:
我正在尝试编写一个语句,列出部门以及他们是否有重复的员工(重复的员工是指 2 个或更多记录具有相同的名字和姓氏,其他列被忽略)
我有这 3 张桌子:
T1:部门 T2:雇员 T3:Party_Rel 注意:T3 是表 1 和表 2 的交集
Dept:
Id | DeptName
---- | --------
1 | Sales
2 | Marketing
3 | Finance
Emp:
Id | EmpFirstName | EmpLastName
---- | ------------ | ------
1 | Hope | Smith
2 | Judith | Bolt
3 | Nathalie | Meyers
4 | Nathalie | Meyers
5 | Helen | Chute
Party_Rel:
Id | DeptId | EmpId
---- | ------ | -----
1 | 1 | 1
2 | 1 | 2
3 | 3 | 3
4 | 3 | 4
5 | 1 | 5
6 | 3 | 5
所以: 销售人员 2 人 市场部有 0 名员工 财务部有 3 名员工,其中 2 名员工姓名相同
我的查询结果如下:
DeptId | DeptName | DuplicateCheck
------ | ------------ | -----------
1 | Sales | Pass
2 | Marketing | N/A
3 | Finance | Fail
Sales 有 3 名员工,他们都是独一无二的,因此 DuplicateCheck = 'PASS' 营销部门有 0 名员工,因此 DuplicateCheck = 'N/A' 财务部有 3 名员工,其中 2 名重复,因此 DuplicateCheck = 'Fail'
我不知道如何构建 SQL 来显示 DuplicateCheck: 我的第一个问题是 Dept 和 Emp 之间的交集表,我不知道如何使用它。 我的第二个问题是如何将重复检查的结果转换为显示值(通过、不适用或失败)。
感谢您的帮助。
【问题讨论】: