好的,我有一张表,其中一列有一些FEW REPEATING记录。
我的任务是选择包含所有属性的REPEATING记录。
CustID FN LN DOB城市州
DOB有一些重复值,我需要从整个表中选择并列出DOB字段中相同的所有记录的所有列。
我的尝试...
Select DOB, COUNT(DOB) As 'SameDOB' from Table1
group by DOB
HAVING (COUNT(DOB) > 1)
这只返回两列,一行第一列是多次出现的DOB列,第二列给出了多少列。
我需要找出一种方法来列出所有属性而不仅仅是这两个......
请指导我正确的方向。
答案 0 :(得分:14)
我认为更通用的解决方案是使用Windows函数:
select *
from (select *, count(*) over (partition by dob) as NumDOB
from table
) t
where numDOB > 1
这更通用的原因是因为很容易在两列或更多列中更改为重复项。
答案 1 :(得分:9)
Select *
FROM Table1 T
WHERE T.DOB IN( Select I.DOB
FROM Table1 I
GROUP BY I.DOB
HAVING COUNT(I.DOB) > 1)
答案 2 :(得分: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
答案 3 :(得分:-1)
select *
from table1, (select count(*) from table1) as cnt