[英]SQL Server select duplicated rows
我是SQL Server的新手,我想选择所有至少一次更换部门的人员。
表结构为:
我有以下代码来生成中间表
select distinct
DepartmentID, NationalIDNumber
from
Table
where
NationalIDNumber in (select NationalIDNumber
from Ben_VEmployee
group by NationalIDNumber
having count(NationalIDNumber) > 1)
输出:
DepartmentID NationalIDNumber
-----------------------------
1 112457891
2 112457891
4 24756624
4 895209680
5 24756624
5 895209680
7 259388196
我的问题是:如何删除上述中间表中的非重复记录?
因此,应删除记录“ 7-259388196”,因为他没有更改部门。
谢谢。
尝试使用group by
并比较最大和最小部门。 如果更改,则这些将有所不同:
select NationalIDNumber
from Ben_VEmployee
group by NationalIDNumber
having min(DepartmentID) <> max(DepartmentID);
如果需要实际部门,可以将其重新加入原始数据。
如果要列出一个以上部门中的每个ID号的列表,可以使用
SELECT COUNT(DepartmentID) AS noDepartments
, NationalIDNumber
FROM Table
GROUP BY NationalIDNumber
HAVING COUNT(DepartmentID) > 1
如果您想删除该员工曾经所在的部门的记录,但现在仅此而已,那么您将必须知道哪个部门知道要删除哪个记录! 如果您知道这一点,请说出来,我们可以解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.