sql查询 - 过滤重复值以创建报告

时间:2012-02-13 14:57:58

标签: sql database

我正在尝试列出表格中的所有重复记录。此表没有主键,并且专门创建用于创建报告以列出重复项。它包含唯一值和重复值。

我到目前为止的查询是:

SELECT [OfficeCD]

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

  GROUP BY [OfficeCD]

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

这是正确的,并给我所有重复 - 这是它发生的次数。

但我希望在报告中显示所有列的所有值。如果不单独查询每条记录,我怎么能这样做?

例如:

每个表有10个字段,[NewID]是多次出现的字段。我需要创建一个报告,其中包含重复newID的所有字段中的所有数据。

请帮忙。 谢谢。

3 个答案:

答案 0 :(得分:2)

你需要一个子查询:

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

此外,您可能想要检查您的标签:您标记了mysql,但语法让我认为您的意思是sql-server

答案 1 :(得分:2)

试试这个:

SELECT * FROM [Duplicates] WHERE NewID IN 
(
    SELECT [NewID] FROM [Duplicates] GROUP BY [NewID] HAVING COUNT(*) > 1
)

答案 2 :(得分:1)

select d.*
from Duplicates d
inner join (
    select NewID
    from Duplicates
    group by NewID
    having COUNT(*) > 1
) dd on d.NewID = dd.NewID