3

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

对于此查询,我不想考虑表中的其他列。

感谢你的帮助!

4

2 回答 2

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

于 2013-05-13T15:02:03.643 回答
0

这是一个北风的例子:

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
于 2013-05-13T15:04:19.183 回答