当前位置: 代码迷 >> Oracle开发 >> 请问一个有关去除重复的SQL语句有关问题
  详细解决方案

请问一个有关去除重复的SQL语句有关问题

热度:49   发布时间:2016-04-24 06:34:01.0
请教一个有关去除重复的SQL语句问题
table如下四列:
A  B  C  D
a  b  1   f
a  c   3  g
a  b   2  h
c  s   4   j
如何用sql语句实现:查出ABCD四列,但如果前两列相同则取C列最大的一条。
比如上述表查询结果就是:
A  B  C  D
a  c   3   g
a  b   2   h
c   s   4   j
感谢~
------解决思路----------------------
方法一堆,参考吧
select id,身份证号,职业
from (
    select id,身份证号,职业,row_number() over(partition by 身份证号 order by 职业) rn
    from T
)where rn=1

select * from T T1
WHERE NOT EXISTS(SELECT 1 FROM T WHERE 身份证号=T1身份证号 AND 职业<T1.职业)
 
select * from T
WHERE (身份证号,职业) IN (SELECT 身份证号,MIN(职业) FROM T GROUP BY 身份证号)
 
SELECT MAX(ID)KEEP(DENSE_RANK FIRST ORDER BY 职业),身份证号,MIN(职业) 
FROM T GROUP BY 身份证号
  相关解决方案