2013-10-12 51 views
2

下面是場景中,SQL:獲取交叉配列

表A

 
--------------------- 
| Col 1  | Col 2 
--------------------- 
| 1   | 2  
--------------------- 
| 3   | 4   
--------------------- 
| 2   | 1    
--------------------- 
| 4   | 3   
--------------------- 

在這裏,在第1欄有一些數據「1」和在第2欄第有一些數據「2」。在同一個表中,有另一行將這些值互換。 我怎樣才能得到輸出如下使用SQL查詢

輸出

 
-------------------------- 
| Col 1  | Col 2  | 
-------------------------- 
| 1   | 2   | 
-------------------------- 
| 3   | 4   | 
-------------------------- 

任何一個可以幫我寫這個SQL查詢?

+0

具有u嘗試新鮮事物???如果是的話,那就把它放在這裏... –

+0

我得到了表A的一個巨大的數據..但我不能靠近解決方案。 – Nemo

+0

這裏你想要哪些行col2 = col1和col1 = col2是這樣嗎? –

回答

4

一種選擇是

SELECT a.col1, a.col2 
    FROM tableA a 
WHERE NOT EXISTS(SELECT 1 
        FROM tableA b 
        WHERE a.col1 = b.col2 
         AND a.col2 = b.col1 
         AND a.col1 > b.col1); 

產生輸出你想

SQL> ed 
Wrote file afiedt.buf 

    1 with tableA as (
    2 select 1 col1, 2 col2 from dual union all 
    3 select 3, 4 from dual union all 
    4 select 2, 1 from dual union all 
    5 select 4, 3 from dual 
    6 ) 
    7  SELECT a.col1, a.col2 
    8  FROM tableA a 
    9  WHERE NOT EXISTS(SELECT 1 
10       FROM tableA b 
11       WHERE a.col1 = b.col2 
12       AND a.col2 = b.col1 
13*       AND a.col1 > b.col1) 
SQL>/

     COL1  COL2 
---------- ---------- 
     1   2 
     3   4