1. SHAK 테이블
UKID SNAME JUMIN_NO HAK_NO HAKGWA_CD
10726 홍길동 800512-2655111 1010 3130
10726 홍길동 800512-2655111 2020 7210
10809 홍길동 800512-2655112 1010 3130
2. SAYUNGJA 테이블
UKID SNAME JUMIN_NO EMAIL PHONE_NO LOGIN_ID
10726 홍길동 800512-2655111 aaa@aaa.com 000-111-222 test
10809 홍길동 800512-2655112 bbb@aaa.com 000-222-333 moon
3. 결과테이블
UKID SNAME JUMIN_NO EMAIL PHONE_NO LOGIN_ID
10726 홍길동 800512-2655111 aaa@aaa.com 000-111-222 test,moon
10809 홍길동 800512-2655112 bbb@aaa.com 000-222-333
(
오라클 10g 입니다.
이름, 생년월일 조건조회시 중복될 건은 많지 않고 많아야 3건미만입니다.)
저기 결과테이블에 LOGIN_ID에 결과셋의 모든 LOGIN_ID를 한꺼번에 출력하고 싶습니다.
이것저것 함수도 써봤는데..잘안되네요...
도와주세요...
with SHAK as(
select '10726' UKID, '홍길동' SNAME, '800512-2655111' JUMIN_NO, '1010' HAK_NO, '3130' HAKGWA_CD from dual
union all
select '10726' UKID, '홍길동' SNAME, '800512-2655111' JUMIN_NO, '2020' HAK_NO, '7210' HAKGWA_CD from dual
union all
select '10809' UKID, '홍길동' SNAME, '800512-2655112' JUMIN_NO, '1010' HAK_NO, '3130' HAKGWA_CD from dual
)
, SAYUNGJA AS
(
select '10726' UKID, '홍길동' SNAME, '800512-2655111' JUMIN_NO, 'aaa@aaa.com' EMAIL, '000-111-222' PHONE_NO, 'test' LOGIN_ID from dual
union all
select '10809' UKID, '홍길동' SNAME, '800512-2655112' JUMIN_NO, 'bbb@aaa.com' EMAIL, '000-222-333' PHONE_NO, 'moon' LOGIN_ID from dual
)
SELECT UKID, JUMIN_NO, SNAME, LOGIN_ID, HAK_NO, PHONE_NO, EMAIL
FROM (
SELECT A.UKID, A.JUMIN_NO, A.SNAME, A.LOGIN_ID, TO_CHAR(B.HAK_NO) HAK_NO, replace(A.PHONE_NO,'-','') PHONE_NO, A.EMAIL
,ROW_NUMBER () OVER ( PARTITION BY a.UKID||'-'||a.SNAME||'-'||a.JUMIN_NO ORDER BY a.UKID DESC ) rn
FROM SAYUNGJA A, SHAK B
WHERE A.UKID = B.UKID
AND TRIM(A.SNAME) = '홍길동'
AND SUBSTR(A.JUMIN_NO,1,6) = '800512'
) WHERE rn = 1
|