'수정가능 조인 뷰'에 해당되는 글 1건

  1. [2009/05/19] [ORACLE] 수정가능 조인 뷰

[ORACLE] 수정가능 조인 뷰

[■DataBase/OO ORACLE OO]

수정가능 조인 뷰를 통한 업데이트

insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');
insert into test values('','aa','');

insert into test values('','bb','');
insert into test values('','bb','');

select * from test

/* Formatted on 2009/05/18 20:15 (Formatter Plus v4.8.6) */
select r from
(
SELECT ROWNUM r,  tt.b
  FROM (SELECT   b
            FROM TEST
        GROUP BY b) tt
)

/* Formatted on 2009/05/18 20:03 (Formatter Plus v4.8.6) */
-- rowid 로  순번
UPDATE TEST t
SET t.a = (SELECT r
                FROM (SELECT ROWNUM r, ROWID rd, a.*
                        FROM TEST a) tt
               WHERE t.ROWID = tt.rd)
 WHERE t.ROWID = (SELECT rd
                    FROM (SELECT ROWNUM r, ROWID rd, a.*
                            FROM TEST a) tt
                   WHERE t.ROWID = tt.rd)

-- rank 함수 사용
UPDATE TEST t
SET t.a = (SELECT r
                FROM (SELECT rank() over(partition by a.b order by rownum) r, ROWID rd, a.*
                        FROM TEST a) tt
               WHERE t.ROWID = tt.rd)
 WHERE t.ROWID = (SELECT rd
                    FROM (SELECT ROWNUM r, ROWID rd, a.*
                            FROM TEST a) tt
                   WHERE t.ROWID = tt.rd)      
       
     
SELECT rank() over(partition by a.b order by rownum) "rank", ROWID rd, a.a, a.b, rank() over(partition by a.b order by rownum) "rank"
FROM TEST a
GROUP BY rownum, rowid, a.a, a.b
order by rownum

A          B          C         
1          aa                   
2          aa                   
3          aa                   
4          aa                   
5          aa                   
6          aa                   
7          aa                   
8          aa                   
9          aa                   
10         aa                   
1          bb                   
2          bb                   


크리에이티브 커먼즈 라이센스
Creative Commons License