簡體   English   中英

SQL Server:根據單個列中的值在表中查找重復項

[英]SQL Server : find duplicates in a table based on values in a single column

我有一個SQL Server表,其中包含以下字段和示例數據:

ID   employeename
1    Jane
2    Peter
3    David
4    Jane
5    Peter
6    Jane

ID列具有每行的唯一值。

employeename專欄有重復。

我希望能夠根據employeename列找到重復項,並列出以逗號分隔的副本旁邊的ID

上述樣本數據的預期輸出:

employeename   IDs
Jane           1,4,6
Peter          2,5

表中還有其他列,我不想為此查詢考慮。

感謝你的幫助!

select
 employeename,
 IDs = STUFF((SELECT ','+ CAST(e2.[ID] AS VARCHAR(10)) 
  FROM emp e2
  WHERE e2.employeename = e1.employeename
  For XML PATH('')
 ),1,1,'')
FROM emp e1
GROUP BY employeename having COUNT(*) > 1

SQL Fiddler

這是Northwind示例:

Use Northwind
GO

SELECT
   ord1.CustomerID,
   OrderIdList = substring((SELECT ( ', ' + convert(varchar(16) , OrderID) )
                           FROM [dbo].[Orders] ord2
                           WHERE ord1.CustomerID = ord2.CustomerID
                           ORDER BY 
                              CustomerID,
                              OrderID
                           FOR XML PATH( '' )
                          ), 3, 1000 )FROM [dbo].[Orders] ord1
GROUP BY CustomerID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM