2
SQLを考慮しなければならない一つの列として考慮されるべきです例えば以下の表のCOL1、COL2、対応する出力: -SQL 1行</p> <p>ASはで説明したように、これら二つの列の値も2列交換に基づく個別
表
Col 1 Col 2
A B
A B
B A
C D
D C
E F
出力
Col1 Col2
A B
C D
E F
SQLを考慮しなければならない一つの列として考慮されるべきです例えば以下の表のCOL1、COL2、対応する出力: -SQL 1行</p> <p>ASはで説明したように、これら二つの列の値も2列交換に基づく個別
表
Col 1 Col 2
A B
A B
B A
C D
D C
E F
出力
Col1 Col2
A B
C D
E F
仮定と共にleast
としてみてください:E F
ような行がテーブル内の "鏡像" を持たない場合
E F
の代わりにF E
だった場合は、反転しないでください。ミラーイメージではなく行F E
のみが出力に含まれている必要があります。この要件によって、問題はより面白くなります。そうでなければ、はるかに簡単で解決策はすでに提供されています。col1
およびcol2
はnull値ではありません。列にヌルがある場合は、実際にヌルが存在する場合に、より詳細な要件を提供する必要があります。クエリおよび出力:
with
input_table (col1, col2) as (
select 'A', 'B' from dual union all
select 'A', 'B' from dual union all
select 'B', 'A' from dual union all
select 'C', 'D' from dual union all
select 'D', 'C' from dual union all
select 'E', 'F' from dual union all
select 'Z', 'H' from dual
),
prep (col1, col2, flag) as (
select a.col1, a.col2, case when b.col1 is null then 0 else 1 end
from input_table a left outer join input_table b
on a.col1 = b.col2 and a.col2 = b.col1
)
select distinct
case when flag = 0 then col1 else least (col1, col2) end as col1,
case when flag = 0 then col2 else greatest(col1, col2) end as col2
from prep
;
COL1 COL2
---- ----
E F
A B
Z H
C D
、あなたが実際に何をしたいの詳細でもう少し詳しく説明していただけますか?私はあなたの質問からそれを理解することはできません。 – Guenther
彼は ' 'のすべての一意のペアを列の位置から独立させたいと考えています。つまり、 'A B'と' B A'が2つの異なる行であれば、それらを1つと考えるべきです。 @Guenther –
1000111
@Guentherはい私は同じ結果が必要です。 –