Database
열을 행으로 변환
그녕이
2008. 9. 19. 12:16
create table test (
user_id varchar(30),
ques_num int,
correct_num int)
------------------
pfeeling 1 0
pfeeling 2 1
pfeeling 3 1
tester 1 1
tester 3 1
-----------------
결과
user_id minor1 minor2 minor3
---------------------------
pfeeling 0 1 1
tester 1 1
SELECT
A.user_id,
MAX(DECODE(ques_num-1,0,correct_num)MINOR1,
MAX(DECODE(ques_num-1,0,correct_num)MINOR2,
MAX(DECODE(ques_num-1,0,correct_num)MINOR3
FROM test A
where a.ques_num < 27
GROUP BY user_id
열을 행으로 변환 시키는 핵심으로는 group와 max 그리고 그안에 쓰여진 조건문에 있다.
group은 열을 그룹화 시켜주는 것이지 행 자체를 없애는 기능이 아니다.
또한 max는 조건식에서 최대값을 찾는 역활이지 한개의 값만 이미 가지고 있는것이 아니다.
따라서 decode안의 컬럼값은 group에 해당하는 모든 값을 가지고 있다.