日期:2014-05-17  浏览次数:20643 次

有一个看似简单的需求,请高手帮忙看看有没有办法实现,谢谢了
有一个看似简单的需求,请高手帮忙看看有没有办法实现。
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 c
where no exists
(
select 1
from (select 字段一,字段二
       from (select a.*,row_number() over(partition by 字段一 order by 字段二 desc) rn
                 from table a.*)
       where rn=1
     ) b

where 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          1
B                          2
                8          2
                5          2
                2          2
C                          3
                9          3
                6          3
                3          3

12 rows selected

SQL>