안녕하세요.
1개 컬럼에 'A', 'B', 'C' 3가지 데이터 코드가 있습니다.
기본키값를 가지는 데이터는 3가지 데이터코드를 모두 가질 수 도 있고, 1개,2개만 가질 수도 있어요.
--------------------------------------------------------
ex)
SELECT *
FROM TABLE
WHERE 기본키 = 구루비
-->
구루비 A 010-1111-1111
구루비 C 010-1111-1111
--------------------------------------------------------
해당 컬럼에 데이터코드가 'C'가 있으면 C가 속한 행만 보여주고,
없으면, A,B가 속한 행을 보여주고 싶어요.
위에 예제의 경우라면 구루비 C 010-1111-1111 만 보여주고 싶어요.
어떻게 하면되나요 ? 알려주세요. 감사합니다.
WITH t AS ( SELECT 'gurubee' gb, 'A' cd, '1111' v FROM dual UNION ALL SELECT 'gurubee', 'C', '1111' FROM dual UNION ALL SELECT 'GURUBEE', 'A', '1111' FROM dual UNION ALL SELECT 'GURUBEE', 'B', '1111' FROM dual ) SELECT * FROM (SELECT gb, cd, v , RANK() OVER(PARTITION BY gb ORDER BY DECODE(cd, 'C', 1, 2)) rk FROM t -- WHERE gb = 'gurubee' ) WHERE rk = 1 ;