2012-02-13 52 views
1

我想列出一個表中的所有重複記錄。該表沒有主鍵,並已專門爲創建報告,列出僅複製創建。它包含唯一值和重複值。SQL查詢 - 過濾重複的值來創建報告

查詢我至今是:

SELECT [OfficeCD] 

     ,[NewID] 
     ,[Year] 
     ,[Type] 
    FROM [Test].[dbo].[Duplicates] 

    GROUP BY [OfficeCD] 

     ,[NewID] 
     ,[Year] 
     ,[Type] 
     HAVING COUNT(*) > 1 

該作品的權利,並給了我所有的重複 - 這是它發生的次數。

但我想在我的所有列的報表中顯示所有的值。我該怎麼辦,如果沒有查詢單獨給每個記錄?

例如:

每個表具有10個字段和[NEWID]是其中正在發生多個times.I需要創建與在NEWID已經被複制的所有字段的所有數據的報告字段。

請幫助。 謝謝。

+1

這是MySQL或SQL服務器?你已經tagget問題MySQL的,但你使用SQL Server風格托架,我希望看到MySQL的風格反引號。 – 2012-02-13 15:02:48

回答

2

你需要一個子查詢:

SELECT * FROM yourtable 
WHERE NewID IN (
    SELECT NewID FROM yourtable 
    GROUP BY OfficeCD,NewID,Year,Type 
    HAVING Count(*)>1 
) 

另外,你可能要檢查你的標籤:您標記mysql,但語法讓我想你指的SQL服務器

2

試試這個:

SELECT * FROM [Duplicates] WHERE NewID IN 
(
    SELECT [NewID] FROM [Duplicates] GROUP BY [NewID] HAVING COUNT(*) > 1 
) 
1
select d.* 
from Duplicates d 
inner join (
    select NewID 
    from Duplicates 
    group by NewID 
    having COUNT(*) > 1 
) dd on d.NewID = dd.NewID