최대 8개까지 정해져 있다면,
with t_table as (
select 'AAA' 사용자, '자격증1' license from dual union all
select 'AAA' 사용자, '자격증2' license from dual union all
select 'BBB' 사용자, '자격증1' license from dual union all
select 'CCC' 사용자, '자격증1' license from dual union all
select 'CCC' 사용자, '자격증8' license from dual
)
select 사용자,
min(decode(license,'자격증1','자격증1')) as "자격증1",
min(decode(license,'자격증2','자격증2')) as "자격증2",
min(decode(license,'자격증3','자격증3')) as "자격증3",
min(decode(license,'자격증4','자격증4')) as "자격증4",
min(decode(license,'자격증5','자격증5')) as "자격증5",
min(decode(license,'자격증6','자격증6')) as "자격증6",
min(decode(license,'자격증7','자격증7')) as "자격증7",
min(decode(license,'자격증8','자격증8')) as "자격증8"
from t_table
group by 사용자
order by 사용자;
by 짱짱
[2010.07.19 19:51:22]
도가니님 감사합니다.
근데 자격증이 8개로 정해져 있는것이 아니고, 자격증코드가 등록되어서 코드테이블과 조인해서 자격증명을 보여줘야합니다.
7개는 정해진 코드값이 있고, 1개의 특정코드는 별도로 자격증명을 입력받았습니다.
by 마농
[2010.07.20 08:03:31]
SELECT user_id
, MIN(DECODE(rn,1,license_nm)) lc_1
, MIN(DECODE(rn,2,license_nm)) lc_2
, MIN(DECODE(rn,3,license_nm)) lc_3
, MIN(DECODE(rn,4,license_nm)) lc_4
, MIN(DECODE(rn,5,license_nm)) lc_5
, MIN(DECODE(rn,6,license_nm)) lc_6
, MIN(DECODE(rn,7,license_nm)) lc_7
, MIN(DECODE(rn,8,license_nm)) lc_8
FROM
(
SELECT t.*
, ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY license_cd) rn
FROM t
)
GROUP BY user_id
;
by 짱짱
[2010.07.22 14:18:09]
마농님 감사합니다.
쿼리 참조해서 잘 해결했습니다....
건강 유의 하세요~ ^^*
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.