2015-11-30 94 views
1

在我们的应用程序中,我们有一些存储员工数据的表格。我需要找出同一个办公室是否多次分配给工作人员。我怎样才能在SQL Server中解决这个问题?找出Sql-server中的重复记录

我试过下面的查询,但它没有给我正确的解决方案。

SELECT DISTINCT STAFFID, officeid 
FROM [stafftable] 
WHERE rowstatus = 'A' 
GROUP BY STAFFID, officeid 
HAVING COUNT(staffid) > 1 
    AND COUNT(officeid) > 1 
ORDER BY STAFFID, officeid 

它还返回分配给不同办事处的工作人员。任何帮助将不胜感激。

+1

如果你正在使用'组by'你并不需要一个不同的。删除那个区别。 – Rahul

回答

1
SELECT * 
FROM (
    SELECT *, RowNum = ROW_NUMBER() OVER (PARTITION BY STAFFID, officeid ORDER BY STAFFID) 
    FROM dbo.stafftable 
    WHERE rowstatus = 'A' 
) t 
WHERE t.RowNum > 1 
1
;With cte 
as (
select * row_number() over(partition by STAFFID, officeid)as count from stafftable 
where rowstatus = 'A' 
) 
select * from cte where count > 1 
2

您可以使用COUNT(*)每组计算所有行:

SELECT STAFFID, officeid 
FROM [stafftable] 
WHERE rowstatus = 'A' 
GROUP BY STAFFID, officeid 
HAVING COUNT(*) > 1 
ORDER BY STAFFID, officeid