找出Sql-server中的重复记录

时间:2015-11-30 15:22:41

标签: sql sql-server tsql

在我们的应用程序中,我们有一些存储人员数据的表。我需要找出同一个办公室是否多次分配给一名工作人员。我怎样才能在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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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

答案 2 :(得分: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