728x90
반응형

이번 카테시안 조인을 활용할 사례는 레코드를 생성시키는 것으로

계약번호에 대해 고객이 해약을 하여 정산을 거쳐 고객에게 지불할 보증금반환금과 청구해야할 위약금, 기기철거비용이 하나의 로우로 정보를 출력하고자 한다

 

먼저 테이블을 생성하면서 기존 컬럼형 테이블을 로우 행으로 만들 때 사용할 넘버가 해당된다

 

CREATE TABLE COPY_T(NO, NO2) AS

 

SELECT ROWNUM, SUBSTR(TO_CHAR(ROWNUM, '09'),2,2)

FROM TEST99

WHERE ROWNUM <=31;

 

위와 같이 만들면 NO, NO2의 두 개의 컬럼과 31개의 로우 수를 가지는 테이블이 된다

 

 

INSET into 전표테이블 (생성일자, ..., ..., 계정과목, 금액, ... )

SELECT to_char(sysdate, ‘yyyymmdd’),

 

          CASE y.no WHEN 1 THEN ‘1234’

                        WHEN 2 THEN ‘5678’

                        WHEN 3 THEN ‘9876’

           END,

          CASE y.no WHEN 1 THEN 보증금반환금

                        WHEN 2 THEN 위약금

                        WHEN 3 THEN 기기철거비

FROM 계약정산테이블 x, COPY_T y

WHERE x.해약일 = :input_date            <- PL/SQL

AND y.no in ( CASE 보증금반환금 WHEN 0 THEN null ELSE 1 END,

                   CASE 위약금 WHEN 0 THEN null ELSE 2 END,

                   CASE 기기철거비 WHEN 0 THEN null ELSE 3 END )

 

<결과>

2019-09-23 1234 보증금 반환금

2019-09-23 5678 위약금

2019-09-23 9876 기기철거비

 

카테시안으로 조인한 다음 조건문을 주고 그에 대해 결합을 한다

 

일반적인 '='이퀴조인이 아닌 카테시안 곱이 사용하과 CASE문을 활용하여 조인을 한 형태이다

이렇게 최대한의 로우 수를 줄여서 조인을 할 수 있는 방법을 더 생각해 보아야겠다

 

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel