CNOUG 里比较有意思的一个SQL

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

一个表 :

-----------------------
列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

你可能感兴趣的:(Oracle,开发)