您的位置:首页 > 数据库

CNOUG 里比较有意思的一个SQL

2008-12-23 13:09 411 查看

请教 搞了一天没弄出来 数据的筛选

一个表 :

-----------------------
列1 列2 列3
-----------------------
b c 20
-----------------------
c b 20
-----------------------
f h 9
-----------------------
h f 9
-----------------------

想要得到的结果:

-----------------------
列1 列2 列3
-----------------------
b c 20
-----------------------
f h 9-----------------------

c b ,h f 作为重复数据去除。如何写 sql 语句?高手帮忙。

解决如下:

上次看到这个贴,想法跟6楼一样,呵呵,今看了9楼的,才知道有bug

重写了个,应该没问题,各位高手指教(c1,c2是多个字符时该方法也适用)

SQL> select * from tmp_a;

C1 C2 C3
---------- ---------- -----------
b c 20
c b 20
f h 9
h f 9
a 10
a 10

6 rows selected
SQL> select c1, c2, c3
2 from (select row_number() over(partition by(case
3 when c1 >= c2 then
4 c1 || c2
5 else
6 c2 || c1
7 end), c3 order by c3) rn,
8 c1,
9 c2,
10 c3
11 from tmp_a)
12 where rn = 1;

C1 C2 C3
---------- ---------- -----------
a 10
b c 20
f h 9

[ 本帖最后由 tdx_rong 于 2008-12-22 11:02 编辑 ]

原文地址
http://www.oracle.com.cn/viewthread.php?tid=139067&extra=page%3D1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: