2016-12-05 49 views
2

我已经做了一个查询来检查重复的项目,并显示重复的ID在不同的列而不是不同的行。在不同的列中显示重复的项目/ ID

SELECT uid, COUNT(*), Max(id) AS dupes1, MIN(id) AS dupes2 
FROM table 
GROUP BY uid 
HAVING (COUNT(*) > 1) 

另一组查询

SELECT y.uid, x.id 
FROM table x 
JOIN (SELECT t.uid 
     FROM table t 
    GROUP BY t.uid 
    HAVING COUNT(t.uid) > 1) y ON y.uid = x.uid 
    where Len(y.uid) > 11 
    order by y.uid 

也能正常工作2重复的项目的,但我想显示在不同的列

预期输出的所有重复项

uid count dupes1 dupes2 dupes3 and so on...

+0

如果有3行具有相同的uid,那么预期的结果是什么?添加一些示例表数据,并且预期结果 – jarlh

+0

结果应该如下: id,count,dup1,dup2,dup3 –

+0

@ArijitMukherjee然后您需要动态sql来这样做 – Eric

回答

2
SELECT uid, COUNT(*), 
-- A varchar column to show all duplicates with the format 1,2,3 
STUFF((
    SELECT ',' + CAST(id AS varchar(10)) FROM table b WHERE a.uid = b.uid FOR XML PATH ('') 
), 1, 1, '') AS dupes 
FROM table a 
GROUP BY uid 
HAVING (COUNT(*) > 1) 
+0

是的,我想这样的结果,但它有可能得到在不同的列而不是单列 –

相关问题