중복값 출력하기 0 1 609

by 성공한다 [2019.09.01 14:02:19]


특정 칼럼의 중복데이터가 있는 경우를 출력 하고 싶습니다.

테이블 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 재학 도덕반장

이렇게 출력하고 싶습니당..!

by 춘 [2019.09.01 16:39:19]
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
;

 

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