3

次のデータを含むテーブルがあります

col1  col2  
a      b  
b      a  
c      d
d      c
a      d 
a      c

a, b私にとっては、 &b, aが同じであるため、行1と行2が重複しています。行 3 と行 4 も同様です。

出力を次のように与えるSQL(PL/SQLではない)クエリが必要です

col1   col2
a       b
c       d
a       d
a       c
4

2 に答える 2

8
select distinct least(col1, col2), greatest(col1, col2)
from your_table

編集: 標準 SQL 関数leastをサポートする DBMS を使用している場合、greatestこれは CASE 式を使用してシミュレートできます。

select distinct 
       case 
         when col1 < col2 then col1
         else col2
       end as least_col, 
       case 
         when col1 > col2 then col1
         else col2
        end as greatest_col 
from your_table
于 2012-07-26T10:51:13.660 に答える
0

これを試して:

CREATE TABLE t_1(col1 varchar(10),col2   varchar(10))

INSERT INTO t_1
VALUES ('a','b'),  
('b','a'),  
('c','d'),
('d','c'),
('a','d'),
('a','c')

;with CTE as (select ROW_NUMBER() over (order by (select 0)) as id,col1,col2,col1+col2 as col3 from t_1)
,CTE1 as (
select id,col1,col2,col3 from CTE where id=1
union all
select c.id,c.col1,c.col2,CASE when c.col3=REVERSE(c1.col3) then null else c.col3 end from CTE c inner join CTE1 c1
on c.id-1=c1.id

)

select col1,col2 from CTE1 where col3 is not null
于 2012-07-26T11:03:25.167 に答える