按单个表

时间:2017-04-06 16:05:16

标签: sql

以下是我的数据

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

我不确定如何在单个表中识别重复日期,然后仅单独返回这些记录。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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