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에 해당하는 모든 값을 가지고 있다.