기술 정보
home
채널 소개
home

Cross Apply 구문 우회 방안

문서 유형
기술 정보
분야
마이그레이션
키워드
join
적용 제품 버전
7FS02PS

개요

Tibero 7 FS02 PS02 버전에서 Cross Apply 구문을 지원하지 않습니다.
Oracle에서 사용하는 Cross Apply 구문을 Tibero에서 우회하여 처리할 수 있는 방법을 안내합니다.

방법

Cross Apply, Outer Apply 특징 설명

특징
Cross Apply
Outer Apply
오른쪽 피연산자
테이블 표현식 (테이블 함수 포함 가능)
테이블 표현식 (테이블 함수 포함 가능)
평가 방식
왼쪽 테이블의 각 행에 대해 오른쪽 테이블 표현식을 평가함.
왼쪽 테이블의 각 행에 대해 오른쪽 테이블 표현식을 평가함.
결과 행 (오른쪽 표현식 결과 없을 때)
왼쪽 테이블의 해당 행은 결과에서 제외됨. (INNER JOIN과 유사)
왼쪽 테이블의 해당 행은 유지되고, 오른쪽 테이블 표현식의 컬럼은 NULL 값으로 채워짐. (LEFT OUTER JOIN과 유사)

1. Cross Apply

샘플 데이터
SQL> create table A ( id number, name varchar(20)); SQL> insert into A values (1, 'KIM'); SQL> insert into A values (2, 'LEE'); SQL> insert into A values (3, 'PARK'); SQL> commit; SQL> create table B ( id number, nickname varchar(20)); SQL> insert into B values (1, 'TEST01'); SQL> insert into B values (2, 'TEST02'); SQL> commit;
SQL
복사
오라클에서 cross apply 구문 수행
SQL> select * from A cross apply ( select * from B where A.id = B.id ) B; ID NAME ID NICKNAME ---------- --------- ---------- -------------------- 1 KIM 1 TEST01 2 LEE 2 TEST02 SQL> select A.id, A.name, B.nickname from A cross apply ( select * from B where A.id = B.id ) B; ID NAME NICKNAME ------- ------------ -------------------- 1 KIM TEST01 2 LEE TEST02
SQL
복사
Tibero에서 cross apply 구문 수행
SQL> select * from A cross apply ( select * from B where A.id = B.id ) B; TBR-8021: Invalid table name. at line 1, column 23 of null: select * from A cross apply ( select * from B where A.id = B.id ) B ^ SQL> select A.id, A.name, B.nickname from A cross apply ( select * from B where A.id = B.id ) B; TBR-8021: Invalid table name. at line 1, column 46 of null: select A.id, A.name, B.nickname from A cross apply ( select * from B where A.id
SQL
복사
Tibero에서 inner join으로 우회
SQL> select * from A inner join b on A.id = B.id; ID NAME ID NICKNAME ------- ------------ ------- ------------ 1 KIM 1 TEST01 2 LEE 2 TEST02 2 rows selected. SQL> select A.id, A.name, B.nickname from A inner join b on A.id = B.id; ID NAME NICKNAME ------- ------------ ---------- 1 KIM TEST01 2 LEE TEST02 2 rows selected.
SQL
복사

2. Outer Apply

샘플 데이터
SQL> create table A ( id number, name varchar(20)); SQL> insert into A values (1, 'KIM'); SQL> insert into A values (2, 'LEE'); SQL> insert into A values (3, 'PARK'); SQL> commit; SQL> create table B ( id number, nickname varchar(20)); SQL> insert into B values (1, 'TEST01'); SQL> insert into B values (2, 'TEST02'); SQL> commit;
SQL
복사
오라클에서 outer apply 구문 수행
SQL> select * from A outer apply ( select * from B where A.id = B.id ) B; ID NAME ID NICKNAME ---- --------- ---------- -------------------- 1 KIM 1 TEST01 2 LEE 2 TEST02 3 PARK SQL> select A.id, A.name, B.nickname from A outer apply ( select * from B where A.id = B.id ) B; ID NAME NICKNAME ------- ------------ ---------- 1 KIM TEST01 2 LEE TEST02 3 PARK
SQL
복사
Tibero에서 cross apply 구문 수행
SQL> select * from A outer apply ( select * from B where A.id = B.id ) B; TBR-8022: Invalid end of SQL. at line 1, column 23 of null: select * from A outer apply ( select * from B where A.id = B.id ) B ^ SQL> select A.id, A.name, B.nickname from A outer apply ( select * from B where A.id = B.id ) B; TBR-8022: Invalid end of SQL. at line 1, column 46 of null: select A.id, A.name, B.nickname from A outer apply ( select * from B where A.id
SQL
복사
Tibero에서 left outer join으로 우회
SQL> select * from A left outer join b on A.id = B.id; ID NAME ID NICKNAME ------- ------------ ------- ------------ 1 KIM 1 TEST01 2 LEE 2 TEST02 3 PARK 3 rows selected. SQL> select A.id, A.name, B.nickname from A left outer join b on A.id = B.id; ID NAME NICKNAME ------- ------------ ---------- 1 KIM TEST01 2 LEE TEST02 3 PARK 3 rows selected.
SQL
복사