한 select 문의 결과중 일부씩 다른 table 에 inserrt가 가능한가요? 0 2 2,548

by 훈훈후니 [Oracle 기초] insert [2015.06.22 21:51:44]


안녕하세요? 

 

다름이 아니라 다음과 같은 insert를 하고 싶은데요.

 

예를 들어 select a, b, c from t; 라는 문장이 있을 때 

 

a,b 로 group by 한 건 tab1에 넣고 그냥 a,b,c 는 tab2에 insert를 하려고 합니다.

 

해당 select query의 결과 row가 1억건이라고 가정하면 select를 2번 날리게 되면 2억건을 access해야 해서요

 

혹시 방법이 없을가요?? 감사합니다.

by jkson [2015.06.23 07:57:48]

어차피 다른 테이블에 인서트해야 해서 두번 select 해야할 것 같은데요.

한번 select로 두 테이블에 insert하려면 프로시저로 for loop 타면서

tab1과 tab2에 따로 넣을 수 있긴하겠지만

건바이건으로 insert라 효율적이진 않을 것 같구요.


by 마농 [2015.06.24 09:36:56]
INSERT ALL
WHEN gp = 1
THEN INTO tab1(a, b)    VALUES(a, b)
ELSE INTO tab2(a, b, c) VALUES(a, b, c)
SELECT GROUPING(c) gp
     , a, b, c
  FROM t
 GROUP BY a, b, ROLLUP((c, ROWNUM))
;
INSERT ALL
WHEN rn = 1 THEN INTO tab1(a, b)    VALUES(a, b)
WHEN  1 = 1 THEN INTO tab2(a, b, c) VALUES(a, b, c)
SELECT ROW_NUMBER() OVER(PARTITION BY a, b ORDER BY c) rn
     , a, b, c
  FROM t
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입