2015-11-30 25 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