有一个看似简单的需求,请高手帮忙看看有没有办法实现。
table
字段一,字段二
a,1
a,4
a,7
b,2
b,5
b,8
c,3
c,6
c,9
需求为:要查询字段一,并去掉重复的记录,并且以字段二顺序排序。
就本人个人认为该需求无法实现,大家也可以说说对这个需求的看法。
(希望大家最好能先测试一下自己的sql然后再发言)
------解决方案--------------------
比如说删除字段2除最大条外的纪录
- SQL code
delete table cwhere no exists(select 1from (select 字段一,字段二 from (select a.*,row_number() over(partition by 字段一 order by 字段二 desc) rn from table a.*) where rn=1 ) bwhere c.字段一=b.字段一 and c.字段二=b.字段二)
------解决方案--------------------
是想要这样的结果吗?如果不是请把相应的结果贴出来,请把想要的结果贴出来,你这样做,谁也无法明白你究竟想要什么。
- SQL code
SQL> SELECT DISTINCT FIELD1, NULL "FIELD2", DR 2 FROM ( 3 SELECT FIELD1, 4 DENSE_RANK() OVER(ORDER BY FIELD1) "DR" 5 FROM TABLE_NAME T 6 )TTT 7 UNION 8 SELECT NULL, 9 FIELD2, 10 DR 11 FROM ( 12 SELECT FIELD2, 13 DENSE_RANK() OVER(ORDER BY FIELD1) "DR" 14 FROM TABLE_NAME T 15 )TT 16 ORDER BY DR,1,2 DESC;FIELD1 FIELD2 DR------ ---------- ----------A 1 7 1 4 1 1 1B 2 8 2 5 2 2 2C 3 9 3 6 3 3 312 rows selectedSQL>