쿼리를 짜다가 막혀서
능력자 선배님들의 조언을 얻고자 질문드립니다.
현재 테이블이
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값을 가져오는 것이 가능할까요?
입니다.
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;