SQL 출력결과 여쭤봅니다. 0 4 1,181

by h2wshot [SQL Developer] [2016.02.16 10:24:18]


안녕하세요. SQL 출력결과에 대해 질문 드립니다.

 

 

 id 컬럼2 컬럼3  컬럼4 
 0001  AAA BBB  testtest
 0002  BBB AAA testtest
 0003  CCC  CCC testtest

.....

 

 

 

 

등 의 출력결과가 있습니다.

 

컬럼2와 컬럼3을 기준으로 1행과 2행이

AAA BBB

BBB AAA

 

이런식으로 컬럼 2와 컬럼3의 순서와 상관없이 같은 결과면 

중복을 제거하고 싶습니다.

죽, 1행과 2행 둘중 하나만 출력되게끔. (AAA, BBB) 집합을 가진 1개의 행만,

 

 

어떤 방법이 있는지 여쭤봅니다..

 

감사합니다.

by jkson [2016.02.16 10:38:50]
with t as
(
 select '0001' id,	 'AAA'  col1,	'BBB' col2, 	'testtest' col3 from dual union all
 select '0002',	 'BBB',	'AAA',	'testtest' from dual union all
 select '0003',	 'CCC',	'CCC',	'testtest' from dual
)
select *
  from
    (
    select id, col1, col2, col3
         , row_number() over(partition by 
                        least(col1,col2), greatest(col1,col2) order by id) rn 
      from t
    )
 where rn = 1

 


by 마농 [2016.02.16 10:58:20]

파이프(||) 대신 컴마(,) 를 사용하는게 맞을 듯 합니다.

예) 파이프(||) 사용 시 ('A', 'BB' ) 와 ('AB', 'B') 가 하나로 합쳐질 가능성 있음.


by jkson [2016.02.16 11:47:53]

아 맞네요~ 

least(col1,col2)||greatest(col1,col2) ->
least(col1,col2),greatest(col1,col2)

수정했슴돵~


by h2wshot [2016.02.16 16:41:19]

좋은 답변 감사합니다 ^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입