DataBase

COPY_T 테이블이란?

클라인STR 2015. 12. 16. 00:57

COPY_T 테이블이란 기준 테이블을 원하는 배수만큼 복제하여 결과 집합을 구할 때 사용하거나 데이터 체크에 사용된다.

1
2
3
4
5
CREATE TABLE COPY_T
AS 
SELECT ROWNUM AS NUM , TO_CHAR(ROWNUM , '009') AS VAL
FROM USER_TABLES
WHERE ROWNUM < 101;
cs

 

 

 

COPY_T테이블을 이용하여 총인원수 합계를 구해보자

1
2
3
4
5
6
7
SELECT  
        A.*,B.NUM
       
   FROM  EMP2 A
       , COPY_T B
  WHERE A.EMP_TYPE = '정규직'
    AND B.NUM < 3 ;
cs

 

 

B.NUM <3 조건에 의하여 2개의 레코드만 추출되고 여기서 EMP2 테이블과 카디젼 조인이 되어 10*2 = 20으로 뻥튀기 된다.

NUM=2인 레코드만 합산해서 구한다.

1
2
3
4
5
6
7
8
9
10
11
12
SELECT  
          DECODE(NUM,1,DEPTNO,'합계') AS DEPTNO
        , DECODE(NUM,1,NAME,'합계') AS NAME 
        , COUNT(DECODE(NUM,1,NAME,'합계')) AS TOTAL
       
   FROM  EMP2 A
       , COPY_T B
  WHERE A.EMP_TYPE = '정규직'
    AND B.NUM < 3
    GROUP BY DECODE(B.NUM,1,A.DEPTNO,'합계')
           , DECODE(NUM,1,NAME,'합계')
      ORDER BY DEPTNO;
cs