조건절 질문드립니다. 0 4 290

by 퇴근하고싶다 [Oracle 기초] [2020.02.11 10:51:53]


안녕하세요

테이블에서 구분 A만 있는 인원만 조회하고 싶습니다.(구분A,구분B 둘다 있는 이름은 제외)

구분 이름
A 홍길동
B 홍길동
A 안중근
A 안중근
A 이순신
B 이순신

결과

구분 이름
A 안중근
A 안중근

 감사합니다!

by 랑에1 [2020.02.11 11:06:12]
WITH T(gb, nm) AS (
SELECT 'A', '홍길동' FROM dual UNION ALL
SELECT 'B', '홍길동' FROM dual UNION ALL 
SELECT 'A', '안중근' FROM dual UNION ALL 
SELECT 'A', '안중근' FROM dual UNION ALL 
SELECT 'A', '이순신' FROM dual UNION ALL 
SELECT 'B', '이순신' FROM dual 
)

SELECT gb, nm
FROM 
(
	SELECT gb, nm, COUNT(DISTINCT gb) OVER(PARTITION BY nm) cnt 
	FROM T
)
WHERE cnt = 1

 


by 퇴근하고싶다 [2020.02.11 11:36:50]

답변감사합니다.

만약 구분 A,B가 있을때는 조회x

구분 A만 있을때 조회o

구분 A,C가 있을때 조회o  <---추가

구분B가 있으면 조회x

할려면 어떻게 해야 할까요?

 

            WITH T(gb, nm) AS (
SELECT 'A', '홍길동' FROM dual UNION ALL
SELECT 'B', '홍길동' FROM dual UNION ALL
SELECT 'A', '안중근' FROM dual UNION ALL
SELECT 'C', '안중근' FROM dual UNION ALL
SELECT 'A', '김유신' FROM dual UNION ALL
SELECT 'A', '김유신' FROM dual UNION ALL
SELECT 'A', '이순신' FROM dual UNION ALL
SELECT 'B', '이순신' FROM dual
)
 
SELECT gb, nm
FROM
(
    SELECT gb, nm
    FROM T
)
 

 


by 우리집아찌 [2020.02.11 11:14:55]
— with 문은 랑에님거 참조
with t ~~


select *
from t a
Where not exists ( select null from t b where b.gb = ‘B’ and a.nm = b.nm )

 


by 마농 [2020.02.11 13:06:27]

1. 구분 A,B가 있을때는 조회x
2. 구분 A만 있을때 조회o
3. 구분 A,C가 있을때 조회o  <---추가
4. 구분B가 있으면 조회x
라고 복잡하게 설명하셨는데?
그냥 간단하게 B 가 있으면 안되는 거 아닌지요?
복잡하게 설명할수록 어려워집니다.
위처럼 복잡하고 모호하게 설명하면?
그러면
b 만 있는 경우는?
c 만 있는 경우는?
b,c 가 있는 경우는?
a,b,c 가 있는 경우는?
또다른 코드가 있는 경우는?
이런식으로 계속 의문만 쌓이게 됩니다.

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