안녕하세요.. 오라클 쿼리에 대하여 문의 드리고자 합니다. 도움을 주시길 부탁 드립니다
값이 다른 케이스는 제외하고자 합니다. (단, 케이스값 > 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 |
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 ;