usop 2022. 12. 8. 15:12

pivoting insert 명령문에서는 하나의 행을 여러개의 행으로 나누어서 입력하는 기능을 제공한다.


예) 5개의 칼럼으로 구성된 요일별 판매실적 데이터를 하나의 칼럼으로 통합 할 수 있다.
    이때 하나의 칼럼으로 통합된 판매 데이터의 요일을 구분하기 위해 요일 구분 칼럼을 추가다. 

     unconditional insert all 명령문과 동일하지만 into 절에서 하나의 테이블만 지정할 수 있다.

 

 

예제를 통해 자세히 알아보자

(5개의 칼럼으로 구성된 요일별 판매 실적 데이터를 하나의 칼럼으로 통합할때 하나의 칼럼으로 통합된 판매

데이터의 요일을 구분하기 위하여 요일 구분 칼럼을 추가하려한다)

 

sales 테이블과 sales_data 테이블을 우선 만든다

create table sales(
sales_no number(4),
week_no number(2),
sales_mon number(7,2),
sales_tue number(7,2),
sales_wed number(7,2),
sales_thu number(7,2),
sales_fri number(7,2));
create table sales_data (
sales_no number(4),
week_no number(2),
day_no number(2),
sales number(7,2));

 

sales에 데이터를 담은 후 이 데이터를 참고하여 saels_data에 값을 담아보자

insert into sales values(1101, 4, 100, 150, 80, 60, 120);
insert into sales values(1102, 5, 300, 300, 230, 120, 150);
select * from sales;

 

insert all
   into sales_data values(sales_no, week_no, '1', sales_mon)
   into sales_data values(sales_no, week_no, '2', sales_tue)
   into sales_data values(sales_no, week_no, '3', sales_wed)
   into sales_data values(sales_no, week_no, '4', sales_thu)
   into sales_data values(sales_no, week_no, '5', sales_fri)
   select sales_no, week_no, sales_mon, sales_tue, sales_wed, sales_thu, sales_fri
from sales;

 

 

select * from sales_data
order by sales_no;