오라클의 집합 연산자를 사용할 때
집합 연산자로 연결된 SELECT문들은 컬럼의 수와 데이터 형이 순서대로 일치해야 합니다.
따라서 동일한 컬럼이 존재하는 경우에
다음과 같이 합집합을 이용한 데이터 SET을 만들 수 있습니다.
하지만 이런 경우는 어떨까요?
우선, TCOM 테이블을 확인해보겠습니다.
TCOM 테이블의 전체 데이터는 위와 같습니다.
이번엔 TEMP 테이블을 확인해보겠습니다.
TEMP 테이블의 전체 데이터는 다음과 같습니다.(일부 생략)
이런 테이블에서
동일한 EMP_ID를 사용하고
TEMP 테이블의 SALARY,
TCOM 테이블의 COMM을 사용해
합집합을 하고 싶다면 어떻게 해야 할까요?
우선 위와 같은 방식으로
합집합을 사용해보겠습니다.
다음과 같이 동일한 컬럼명을 이용해 합집합 처리를 하면
다음과 같이 오류가 발생합니다.
이는 TCOM에 SALARY라는 컬럼을 찾을 수 없다는 것입니다.
이런 경우에는 어떻게 합집합을 사용해야 할까요?
이때는 TCOM에 존재하지 않는 컬럼인 SALARY와
TEMP에 존재하지 않는 컬럼인 COMM 앞에
'0'이나 'NULL'등 기본 값을 부여해 문제를 해결할 수 있습니다.
다음과 같이 NULL을 사용해 합집합을 실행한다면,
컬럼의 값이 없을 때는 NULL로 표현하는
다음과 같은 데이터 SET을 얻을 수 있습니다.
이렇듯 컬럼의 자리에 값을 부여하는 식으로
컬럼이 존재하지 않는 테이블끼리 합집합을 사용할 수 있습니다.
값을 줄 때 'NULL SALARY'와 같이 표현하지 않고 'NULL'만 주어도 실행이 가능하지만
컬럼명이 NULL로 바뀌기 때문에 이에 주의하여 사용하시면 될 것 같습니다.
내용에 관해 오류 발견 시 댓글이나 메일 부탁드립니다!🙇♂️🙇♂️
'내가 공부하려고 올리는 > DB' 카테고리의 다른 글
오라클 - 조인(JOIN) 정리해보기 (0) | 2021.11.16 |
---|---|
오라클 - 날짜와 숫자를 문자로 나타내는 법 (0) | 2021.11.16 |
오라클 - 날짜와 시간을 더하고 빼기 (0) | 2021.11.03 |
오라클 - ROUND와 TRUNC 함수의 차이 (0) | 2021.11.03 |
오라클 - LENGTH 함수를 이용하여 한글의 글자 수 알아내기 (0) | 2021.10.28 |
댓글