2013-10-12 4 views
2

est le scénario ci-dessous,SQL: Obtenir colonnes correspondantes croix

Tableau A

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

Ici col 1 il y a certaines données '1' et dans la colonne 2, il y a des données '2'. Dans la même table, il y a une autre ligne où ces valeurs sont échangées. Comment puis-je obtenir la sortie comme ci-dessous à l'aide requête SQL

Sortie

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

peut me aider à écrire la requête SQL pour cela?

+0

ont u essayé quoi que ce soit ??? si oui alors mets ça ici ... –

+0

J'ai obtenu le tableau A sous forme d'énormes données .. mais je ne suis pas en mesure de m'approcher à proximité de la solution. – Nemo

+0

Ici, vous voulez les lignes dans lesquelles col2 = col1 et col1 = col2 est-il donc ??? –

Répondre

4

Une option serait

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); 

qui produit la sortie que vous voulez

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 
Questions connexes