Finding duplicate values

2020-04-21 04:04发布

I have a table called Transfers, and I would like to find all the records that have duplicate values on three columns Doc ID,Amount and Date. Basically what I need is to find where Doc id ,amount and dates are the same What is the best query I can use to find these duplicates?

I tried the following query

select transfers.doc_id,transfers.date,transfers.amount,
  from transfers 
 where transfers.date between $P{StartDate} and $P{EndDate}
 group by doc_id
having doc_id >1;

Here is what results am looking for:

Doc_id  Date        amount
1234    12/07/2019  3,000
1234    12/07/2019  3,000
2345    12/07/2019  15,000
2345    12/07/2019  15,000
4321    12/07/2019  5,600
4321    12/07/2019  5,600

2条回答
叼着烟拽天下
2楼-- · 2020-04-21 04:15

Consider using group by for three columnsgroup by doc_id,Amount,Date

select t.doc_id,t.date,t.amount
  from transfers t
 where t.date between $P{StartDate} and $P{EndDate}
 group by doc_id,Amount,Date
having count(doc_id) >1;
查看更多
啃猪蹄的小仙女
3楼-- · 2020-04-21 04:26

Use This:

select transfers.doc_id,transfers.date,transfers.amount,count(*) counts
from transfers
group by doc_id,date,amount
having counts>1;

Output will be with Count of duplicate Records:

doc_id  date        amount  counts
1234    12/07/2019  3,000   2
2345    12/07/2019  15,000  2
4321    12/07/2019  5,600   2
查看更多
登录 后发表回答