2014-07-15 4 views
0

나는 다음과 같은 예와 같이 테이블에서 값을 선택하기 위해 노력하고있어 :열에서 데이터를 선택하고 그 값에 따라 다른 열을 표시

user id 
---------- 
a  1 
b  1 
c  3 
d  2 
a  3 

및 결과는 다음과 같이 될 것입니다 :

user id_1 id_2 id_3 
----------------------- 
a  1  NULL 3 
b  1  NULL NULL 
c  NULL NULL 3 
d  NULL 2  NULL 

그래서 기본적으로 내가 무엇을 달성하기 위해 노력하고있어 세 번째 열에 id ==3 모든 열에 id's ==1와 사용자와 다른 열을 id ==2로 사용자와 사용자를 얻을 수 있고 사용자는 같은 중복 케이스 사용자 'a'에 대해 id=1id=3으로 한 번 표시되었으며 결과 테이블에서이 복제를 캡처하고 싶습니다.

어떤 아이디어라도 감사 할 것입니다. 미리 감사드립니다.

답변

1

이것을 피벗이라고합니다. 조건부 집계를 통해이 작업을 수행 할 수 있습니다.

select user, 
     max(case when id = 1 then id end) as id_1, 
     max(case when id = 2 then id end) as id_2, 
     max(case when id = 3 then id end) as id_3 
from table t 
group by user 
order by user; 
+0

고마워요! 그것은 작동합니다 – tkyass

+0

다른 질문이 있는데, 나는 id_1, id_2 및 id_3 열에 Nulls 대신 0을 넣으려고합니다. 사용자 선택시 최대 케이스, id = 1, coalesce (id, 0)와 같은 COALESCE를 사용하려고했습니다.) end)를 id_1 ... ' – tkyass

+0

@ user1762447로 지정하십시오. . . 단지'else'를'case' 문장 각각에 추가하십시오. –

관련 문제