一尘不染

SQL Server:根据单个列中的值在表中查找重复项

sql

我有一个包含以下字段和示例数据的SQL Server表:

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

ID列的每一行都有唯一的值。

employeename列有重复项。

我希望能够根据该employeename列查找重复项,并在ID其旁边列出重复项的s,并以逗号分隔。

以上样本数据的预期输出:

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

表中还有其他列我不想考虑此查询。

感谢你的帮助!


阅读 126

收藏
2021-03-10

共1个答案

一尘不染

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提琴手

2021-03-10