2017-04-06 59 views
1

這裏是我的數據看起來像查找重複的日期由某個ID在一個表中

ID   Date    Other Field 
123  1/2/2017  a 
123  1/3/2017  b 
123  1/3/2017  c 
123  1/5/2017  d 
123  1/6/2017  e 
123  1/6/2017  f 
456  2/4/2017  g 
456  2/4/2017  h 
456  2/5/2017  i 
456  2/6/2017  j 

我期待,以確定當存在由ID重複的日期,我想返回整個記錄。結果看起來像

ID  Date   Other Field 
123  1/3/2017  b 
123  1/3/2017  c 
123  1/6/2017  e 
123  1/6/2017  f 
456  2/4/2017  g 
456  2/4/2017  h 

我不知道如何識別單個表內的重複日期,然後單獨返回這些記錄。

任何幫助,非常感謝!

回答

1
select 
t1.* from 
table t1 
join 
(select id,date,count(*) from 
table t2 
group by id,date 
having count(*)>=2 
) t2 
on t1.id=t2.id and t1.date=t2.date 
+0

如果有在子查詢指出2以上的HAVING語句? – baineschile

+0

@baineschile:是的,我錯過了,現在加入 – TheGameiswar

+0

感謝您的幫助!弄清楚了。 – baineschile

0

您使用的數據庫是?如果它支持的窗口函數(例如,Oracle或PostgreSQL的),則:

select 
    id, "date", other_field 
from 
(
    select 
    tbl.*, 
    count(*) over (partition by id, "date") date_cnt 
    from tbl 
) 
where date_cnt >= 2 
+0

ssms 16,但我想出瞭解決方案。感謝您的答覆。 – baineschile

+0

@baineschile你可以發佈解決方案嗎? – avd

+0

我使用了頂級解決方案。它需要一個HAVING子句來工作。 – baineschile

相關問題