8

わかりましたので、列の1つに少数の繰り返しレコードがあるテーブルがあります。

私の仕事は、すべての属性を持つ REPEATING レコードを選択することです。

CustID FN LN DOB 市区町村 州

DOBには、テーブル全体から選択し、DOBフィールド内で同じすべてのレコードのすべての列をリストする必要があるいくつかの繰り返し値があります..

私の試み...

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

group by DOB

HAVING (COUNT(DOB) > 1)

これは 2 つの列と 1 つの行のみを返します。1 番目の列は複数回出現する DOB 列で、2 番目の列はその数を示します。

この2つだけでなく、すべての属性をリストする方法を見つける必要があります...

私を正しい方向に導いてください。

4

4 に答える 4

14

より一般的な解決策は、Windows関数を使用することだと思います:

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

これがより一般的な理由は、2 つ以上の列にまたがる重複に簡単に変更できるためです。

于 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 に答える