簡體   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