我有一个包含以下字段和示例数据的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

10-08 00:49