본문 바로가기
Database/Oracle

한 아이디의 여러row 데이터 한 row로 출력하기

by BeGeek 2014. 12. 20.

한 테이블에 id를 키값으로 여러 행(rows)의 데이터가 저장되어 있는 경우 이를 출력시 한 행(row)에 출력해야할 경우가 있다.

오라클 decode 메소드를 통해 컬럼을 구분하고 이를 max 메소드와 group by절을 통해 한행으로 출력 가능하다.

--테스트 테이블 생성

create table TEST1 (id varchar2(20), type varchar2(20), value number); 

--테스트 데이터 insert

insert into TEST1 values('jti','employeeNum','1234');
insert into TEST1 values('jti','prodCode','4321');
insert into TEST1 values('jti','mapCode','1010');
insert into TEST1 values('jti','shipCode','2121'); 

--입력된 데이터 조회

select *
from TEST1; 

--가로로 출력

select id, decode(type,'employeeNum',value) employeeNum, decode(type,'prodCode',value) prodCode, decode(type,'mapCode',value) mapCode,
decode(type,'shipCode',value) shipCode
from TEST1

 

--한 행으로 출력: 여러 컬럼으로 구분된 값을 한 행으로 출력

select id, max(decode(type,'employeeNum',value)) employeeNum, max(decode(type,'prodCode',value)) prodCode, max(decode(type,'mapCode',value)) mapCode,
max(decode(type,'shipCode',value)) shipCode
from TEST1
group by id;

 

 

댓글