DATOR


나열된 컬럼을 여러 RECORD로 생성(조인을 이용한 데이터의 연결) Application Development


PURPOSE

카테시안 곱을 활용한 데이터의 연결방법을 살펴본다.

SCOPE & APPLICATION

KEY IDEA

‘조건이 없다’ 즉, 무조건(無條件)으로 조인을 하여 우리가 원하는 대상집합을 생성하는 데 사용하여 여러가지 다양한 확장 SQL을 구현한다.

(KEY WORD : CARTESIAN PRODUCT, 카테시안 곱, COPY_T, 데이터 연결)

SUPPOSITION

  • 어느 보험회사에서 어떤 계약번호에 대해 고객이 해약을 하여 정산을 거쳤을 때 고객에게 지불할 보증금반환금과 청구해야 할 위약금, 기기철거비용이 하나의 로우에 있다고 가정을 한다.
     
  • 필요한 다른 처리가 완료된 후 이제 이 값들에 대한 전표를 발생시키고자 한다. 물론, 위의 각 발생 값들은 별도의 로우로 생성되어야 할 것이며 각각 다른 계정과목을 가지게 될 것이다.

DESCRIPTION

  • 위의 요구사항을 해결하기 위한 SQL을 다음과 같이 생성한다.

INSERT INTO 전표테이블( 생성일자, …. , 계정과목, 금액, ….. )
SELECT TO_CHAR(SYSDATE,’YYYYMMDD’), ……..,
       DECODE(Y.NO,1,’1234’, 2,’5678’, 3,’9876’),
       DECODE(Y.NO,1, 보증금반환금, 2, 위약금, 3, 기기철거비),
       …………..
FROM 계약정산테이블 X, COPY_T Y
WHERE X.해약일 = :INPUT_DATE
  AND Y.NO <= 3 ;

  • 위의 SQL을 살펴보면 두개의 테이블 간에 각각 자기 집합의 처리 범위를 부여한 조건만 있고 둘 사이를 조인하는 연결고리는 존재하지 않는다. 이 결과는 당연히 카테시안 곱만큼의 조인 결과가 발생할 것이다. 입력 받은 날짜에 해약한 모든 고객들마다 3개씩의 로우가 생성되고 필요한 가공을 거쳐 입력된다.

     

Leave Comments