的SQL Server:查找基于值一列
我有以下字段和样本数据SQL Server表在表中重复:的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
有表中的其他列,我这样做没有任何要考虑此查询。
感谢您的帮助!
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
谢谢@EricZ!这就是我一直在寻找的! – slayernoah 2013-05-13 21:38:51
使用CTE怎么样? “与CTE一样(选择row_number()结束(由雇员按ID排序)从表中删除)” - 如何继续? – 2013-06-11 18:44:16
@HelenCraigman,不知道你想用CTE做什么,查询显示行号。对于字符串连接,FOR XML是更好的方法。 – EricZ 2013-06-11 18:58:42
这里是一个罗斯文例如:这个问题的
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
必须有至少100副本(但我也懒得寻找他们)。 – 2013-05-13 15:51:21