2

以下はシナリオです。

表 A

----------------------
| | 列 1 | 列 2  
----------------------
| | 1 | 2      
----------------------
| | 3 | 4           
----------------------
| | 2 | 1             
----------------------
| | 4 | 3           
----------------------

ここで、列 1 にはデータ「1」があり、列 2 にはデータ「2」があります。同じテーブルには、これらの値が入れ替わる別の行があります。SQLクエリを使用して以下の出力を取得するにはどうすればよいですか

出力

--------------------------
| | 列 1 | 列 2 |
--------------------------
| | 1 | 2 |
--------------------------
| | 3 | 4 |
--------------------------

このためのSQLクエリを書くのを手伝ってくれる人はいますか?

4

1 に答える 1

4

1つのオプションは

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
于 2013-10-12T05:06:56.860 に答える