본문 바로가기

Study/Oracle

[oracle] update

* common table 생성

필드는 comm_gropp_code varchar2(10),  comm_code varchar2(10), desc varchar2(100)

 

create table common (

    comm_group_code varchar2(10),

    comm_code varchar2(10),

    comm_desc varchar2(100)

);

 

 

 

* ho_info에 필드 floor 를 추가하고.. 각 필드에 층의 값을 update 하시오..

alter table ho_info add (floor number(2));

update ho_info h set floor = (decode(MOD(h.ho_code,22),  0,  22 , MOD(h.ho_code,22)));

 

 

 

* ho_info  direction 필드 추가 후 1동은 '남향', 2동은 '동향', 3동은 '동향" 으로 설정하고 common table 값에 향을 입력하고 코드값을 ho_info direction 필드에 업데이트 하시오..

alter table ho_info add (direction varchar2(10));

update ho_info set direction = (decode(dong_code, 1, '남향', 2, '동향', 3, '동향'));

 

insert into common values ('DIRECTION', 1, '');

insert into common values ('DIRECTION', 2, '');

insert into common values ('DIRECTION', 3, '');

insert into common values ('DIRECTION', 4, '');

 

update ho_info set direction=(

case

when direction='동향' then '1'

when direction='서향' then '2'

when direction='남향' then '3'

when direction='북향' then '4'

end

);

 

 

 

* 동별로 7~10 층 사이의 가격을 20% 상승시키시오.

update ho_info set price=(

case

when (7<=floor) and (11>=floor) then price+(price*0.2) else price

end

);

-> update ho_info set price= price+(price*0.2) where floor between 7 and 11;

 

* 향이 남향이 동의 가격을 10% 상승시키시오..

update ho_info set price=(

case

when direction = 3 then price+(price*0.1) else price

end

);
-> update
 ho_info set price = price*1.1 where direction = '3';

 

 

* 주소를 만들때 addr + apt_name + dong_name + ho_name 이렇게 하면 주소 update

update ho_info set name=(

case

when apt_code=1 then replace(name, substr(name, 0, 5), '')

when apt_code=2 then replace(name, substr(name, 0, 7), '')

end

);