수정가능 조인 뷰를 통한 업데이트
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


::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::