Here is my sample table:
idmain | idtime | idperson1 | idperson2 |
---|---|---|---|
141 | 20220106 | 510 | 384 |
221 | 20220107 | 300 | 184 |
221 | 20220107 | 301 | 184 |
465 | 20220108 | 300 | 184 |
525 | 20220109 | 111 | 123 |
525 | 20220109 | 112 | 123 |
525 | 20220109 | 113 | 123 |
Duplicated records only differ by idperson1
. So I require to remove these records preserving only the record with the max value of idperson1
. So my final table should be:
idmain | idtime | idperson1 | idperson2 |
---|---|---|---|
141 | 20220106 | 510 | 384 |
221 | 20220107 | 301 | 184 |
465 | 20220108 | 300 | 184 |
525 | 20220109 | 113 | 123 |
CodePudding user response:
first you can use subquery to obtain max value of idperson1. then use this condition like this:
select a.* from fact1 a
where idperson1=(select max(b.idperson1) from fact1 b where a.idtime=b.idtime and a.idperson2=b.idperson2);