다른 케이스 제외 처리 0 4 1,018

by zzang [SQL Query] [2022.11.02 16:52:11]


안녕하세요.. 오라클 쿼리에 대하여 문의 드리고자 합니다. 도움을 주시길 부탁 드립니다

값이 다른  케이스는 제외하고자 합니다. (단, 케이스값 > 0 값 기준으로 함)아래의 결과의 자료를 추출 하고자 합니다 

<원천 데이터 >

구분 case 1 case2 case3 case4 case5
A 0 0 0 0 40
B 0 0 23 0 0
C 0 0 33 0 0
D 0 25 0 0 0

 

< 결과 > B/C 구분의 case3 위아래 다른 값을 가지고 있으므로 제외 됨

구분 case1 case2 case3 case4 case5
A 0 0 0 0 40
D 0 25 0 0 0

 

by 마농 [2022.11.02 17:15:57]

데이터의 특징을 알려주세요.
5개 case 중 하나만 값이 들어 오는 것인지? 여러개 들어올 수 있는지?
어떤 목적으로 쿼리를 작성하는 것인지?
C 의 case 가 만약 23 이라면? 제외되지 않는 건가요?


by zzang [2022.11.02 17:24:50]

누락된 내용을 콕 집어주시니 정말 감사합니다.

동일 Case에 두개 이상의 값이 서로 상이 할 경우 제외 하기 위함입니다.
C의 case가 만약 23이라면 제외 여부? 제외 되지 않습니다.(B의 case와 값과 동일 하므로..)


by 마농 [2022.11.02 18:22:05]
WITH t AS
(
SELECT 'A' gb, 0 c1, 0 c2, 0 c3, 0 c4, 40 c5 FROM dual
UNION ALL SELECT 'B', 0,  0, 23, 0, 0 FROM dual
UNION ALL SELECT 'C', 0,  0, 33, 0, 0 FROM dual
UNION ALL SELECT 'D', 0, 25,  0, 0, 0 FROM dual
)
SELECT a.*
  FROM t a
     , (SELECT gb, c, v
             , COUNT(DISTINCT v) OVER(PARTITION BY c) cnt
          FROM t
         UNPIVOT (v FOR c IN (c1, c2, c3, c4, c5))
         WHERE v > 0
        ) b
 WHERE a.gb = b.gb
   AND b.cnt = 1
;

 


by zzang [2022.11.02 19:07:50]

많은 도움이 되었습니다. 답변 감사드립니다. 

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