8

好的,所以我有一个表,其中一列有几个重复记录。

我的任务是选择具有所有属性的 REPEATING 记录。

CustID FN LN DOB 城市州

DOB 有一些重复的值,我需要从整个表中选择并列出 DOB 字段中所有相同记录的所有列。

我的尝试...

Select  DOB, COUNT(DOB) As 'SameDOB' from Table1

group by DOB

HAVING (COUNT(DOB) > 1)

这仅返回两列和一行,第一列是多次出现的 DOB 列,第二列给出了多少。

我需要想办法列出所有属性,而不仅仅是这两个...

请指导我正确的方向。

4

4 回答 4

14

我认为更通用的解决方案是使用 windows 功能:

select *
from (select *, count(*) over (partition by dob) as NumDOB
      from table
     ) t
where numDOB > 1

这更普遍的原因是因为很容易更改为跨两列或多列的重复项。

于 2012-05-08T02:47:45.387 回答
9
Select * 
FROM  Table1 T
WHERE T.DOB IN( Select   I.DOB
                FROM     Table1 I
                GROUP BY I.DOB
                HAVING   COUNT(I.DOB) > 1)
于 2012-05-08T02:14:14.027 回答
4

尝试加入子查询,这也将允许您查看计数

select t.*, a.SameDOB from Table1 t
join (
  Select  DOB, COUNT(DOB) As 'SameDOB' from Table1 
  group by DOB 
  HAVING (COUNT(DOB) > 1) 
) a on a.dob = t.dob
于 2012-05-08T02:17:02.533 回答
-1
select * 
from table1, (select count(*) from table1) as cnt
于 2014-04-03T04:58:28.297 回答