특정 칼럼의 중복데이터가 있는 경우를 출력 하고 싶습니다.
테이블 student :
학번 | 이름 | 생년월일 | 변경일자 | 상태 | 직급 |
111222 | 홍길동 | 19900201 | 20190101 | 재학 | 청소반장 |
111234 | 홍길동 | 19900201 | 20190301 | 재학 | 학습반장 |
111567 | 홍길동 | 19900201 | 20190401 | 계약만료 | 오락부장 |
111777 | 이순신 | 19910101 | 20190102 | 재학 | 학생 |
222777 | 안중근 | 19880101 | 20190301 | 재학 | 오락부장 |
222888 | 안중근 | 19880101 | 20190401 | 재학 | 도덕반장 |
이 테이블에서 직번이 두개이상이고 상태가 '재학'중인것만 출력을 하면..
학번 | 이름 | 생년월일 | 변경일자 | 상태 | 직급 |
111222 | 홍길동 | 19900201 | 20190101 | 재학 | 청소반장 |
111234 | 홍길동 | 19900201 | 20190301 | 재학 | 학습반장 |
222777 | 안중근 | 19880101 | 20190301 | 재학 | 오락부장 |
222888 | 안중근 | 19880101 | 20190401 | 재학 | 도덕반장 |
이렇게 출력하고 싶습니당..!
WITH t AS ( SELECT 111222 학번, '홍길동' 이름, '19900201' 생년월일, '20190101' 변경일자, '재학' 상태, '청소반장' 직급 FROM DUAL UNION ALL SELECT 111234, '홍길동', '19900201', '20190301', '재학', '학습반장' FROM DUAL UNION ALL SELECT 111567, '홍길동', '19900201', '20190401', '계약만료', '오락부장' FROM DUAL UNION ALL SELECT 111777, '이순신', '19910101', '20190102', '재학', '학생' FROM DUAL UNION ALL SELECT 222777, '안중근', '19880101', '20190301', '재학', '오락부장' FROM DUAL UNION ALL SELECT 222888, '안중근', '19880101', '20190401', '재학', '도덕반장' FROM DUAL ) SELECT 학번 , 이름 , 생년월일 , 변경일자 , 상태 , 직급 FROM ( SELECT 학번 , 이름 , 생년월일 , 변경일자 , 상태 , 직급 , COUNT(*) OVER (PARTITION BY 생년월일) CNT FROM T ) WHERE 상태 = '재학' AND CNT >= 2 ORDER BY 1 ;