본문 바로가기
내가 공부하려고 올리는/DB

오라클 - 존재하지 않는 컬럼의 값을 UNION 하는 방법

by 결딴력 2021. 11. 8.
반응형

오라클의 집합 연산자를 사용할 때

집합 연산자로 연결된 SELECT문들은 컬럼의 수와 데이터 형이 순서대로 일치해야 합니다.

따라서 동일한 컬럼이 존재하는 경우에

다음과 같이 합집합을 이용한 데이터 SET을 만들 수 있습니다.

 

합집합 이용 예

하지만 이런 경우는 어떨까요?

우선, TCOM 테이블을 확인해보겠습니다.

TCOM 테이블

TCOM 테이블의 전체 데이터는 위와 같습니다.

 

이번엔 TEMP 테이블을 확인해보겠습니다.

TEMP 테이블의 전체 데이터는 다음과 같습니다.(일부 생략)

TEMP 테이블

이런 테이블에서

동일한 EMP_ID를 사용하고

TEMP 테이블의 SALARY,

TCOM 테이블의 COMM을 사용해

합집합을 하고 싶다면 어떻게 해야 할까요?

 

우선 위와 같은 방식으로

합집합을 사용해보겠습니다.

다음과 같이 동일한 컬럼명을 이용해 합집합 처리를 하면

실행문

다음과 같이 오류가 발생합니다.

결과

이는 TCOM에 SALARY라는 컬럼을 찾을 수 없다는 것입니다.

 

이런 경우에는 어떻게 합집합을 사용해야 할까요?

이때는 TCOM에 존재하지 않는 컬럼인 SALARY와

TEMP에 존재하지 않는 컬럼인 COMM 앞에

'0'이나 'NULL'등 기본 값을 부여해 문제를 해결할 수 있습니다.

 

다음과 같이 NULL을 사용해 합집합을 실행한다면,

실행문

컬럼의 값이 없을 때는 NULL로 표현하는

다음과 같은 데이터 SET을 얻을 수 있습니다.

실행 결과

이렇듯 컬럼의 자리에 값을 부여하는 식으로

컬럼이 존재하지 않는 테이블끼리 합집합을 사용할 수 있습니다.

값을 줄 때 'NULL SALARY'와 같이 표현하지 않고 'NULL'만 주어도 실행이 가능하지만

컬럼명이 NULL로 바뀌기 때문에 이에 주의하여 사용하시면 될 것 같습니다.

 

 

 

내용에 관해 오류 발견 시 댓글이나 메일 부탁드립니다!🙇‍♂️🙇‍♂️
반응형

댓글