쿼리 질문입니다. 조건에 따른 다른 row를 가져올 수 있을까요? 0 2 1,264

by 조성진 [SQL Query] [2015.05.22 11:47:37]


쿼리를 짜다가 막혀서 

능력자 선배님들의 조언을 얻고자 질문드립니다.

 

현재 테이블이

id        name         order         type

001      A               1              WEB

002      B               2              WEB

003      C               3              WEB

004      D               1              MOB

005      E                2              MOB

006      F                3              MOB

 

이런 테이블이 있다는 가정을 할 경우에

목표로 하는 결과는

type id name1 name2 name3
WEB 001 A B C
MOB 004 D E F

 

로 나오게 하려고 합니다.

GROUP BY type을 잡고 id는 min(id)를 이용해서 얻어왔는데요.

지금 막힌 부분이 

name1, name2, name3에서 

listorder에 따른 name값을 가져오려고 하는데

여기에서 막히네요.

case when 을 써서 listorder=1 이면 해당 row의 image를 가져와라 이렇게 할 수 있을까요?

function이나 procedure를 써야만 가능 한 것인가요?

 

※ 요약하자면 

listorder에 따른 해당 row의 name값을 가져오는 것이 가능할까요?

입니다.

by swlee710 [2015.05.22 13:27:14]


with t (id,nm,od,tp) as (
select '001','A',1,'WEB' from dual union all
select '002','B',2,'WEB' from dual union all
select '003','C',3,'WEB' from dual union all
select '004','D',1,'MOB' from dual union all
select '005','E',2,'MOB' from dual union all
select '006','F',3,'MOB' from dual)
select tp,min(id) id
         ,min(decode(od,1,nm)) nm1
         ,min(decode(od,2,nm)) nm2
         ,min(decode(od,3,nm)) nm3
from t
group by tp
order by tp desc;


by 조성진 [2015.05.22 13:54:18]

swlee710 님 감사합니다.

큰 도움이 됐습니다.

case when 으로 처리 중이었는데

지금 써 주신 decode처럼

case when 자체를 묶어버렸어야 했네요.

정말 정말 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입