繁体   English   中英

SQL Server选择重复的行

[英]SQL Server select duplicated rows

我是SQL Server的新手,我想选择所有至少一次更换部门的人员。

表结构为:

  • BusinessEntityID
  • DepartmentID的
  • ShiftID
  • 开始日期
  • RateChangeDate
  • 身份证号码

我有以下代码来生成中间表

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM