BookmarkSubscribeRSS Feed

UNION

Started yesterday by
Modified yesterday by
Views 61

UNION은 여러 데이테셋을 하나로 합칠 때 사용하는 SQL 구문입니다.

 

 

image.png

 https://www.devart.com/dbforge/sql/sqlcomplete/union-vs-union-all.html

 

위 그림은 UNION 구문이 수행되는 프로세스를 보여줍니다.

프로세스는 다음과 같습니다.

  1. 데이터셋의 행을 위 아래로 붙이기

  2. 동일한 데이터(중복값)가 있다면 중복을 제거합니다. (중복을 그대로 유지할 수 있는 옵션도 있습니다.)

하지만 UNION이 정상적으로 동작하려면 몇 가지 조건이 충족되어야 합니다.

 

 

1. 가장 먼저 결합하기 위한 데이터셋의 컬럼의 개수가 동일해야합니다.입니다.

예를 들어 첫 번째 데이터셋이 이름, 부서, 나이 총 3개의 컬럼으로 구성되어 있고 데이터셋을 합칠 두 번째 데이터셋이 이름, 부서처럼 2개의 컬럼만 가지고 있다면 UNION을 사용할 수 없습니다.

2. 두 번째는 결합하기 위한 데이터셋의 컬럼의 순서입니다. 컬럼명을 기준으로 자동 매핑하는 것이 아니라, 위치 기준으로 데이터를 결합합니다.

예를 들어 첫 번째 데이터셋이 1) 이름, 2) 부서, 3) 나이 순으로 되어있고, 두 번째 데이터셋이 2)부서, 1)이름, 3)나이 순서로 되어 있으면 특정 칼럼에 들어가야할 결과값이 다른 컬럼으로 들어갈 수 있습니다.

3. 세 번째는 데이터 타입입니다.

두번째에 결합하려는 데이터셋의 칼럼의 순서도 일치해야하지만, 데이터 타입도 동일해야합니다.

첫번째 데이터셋의 나이의 칼럼이 숫자형인데 두 번째 데이터셋의 동일한 위치에 있는 나이 칼럼이 문자형이라면 UNION 결합시에는 오류를 출력할 수 있습니다.

 

 

■ PROC SQL - UNION 기본 Syntax

UNION은 PROC SQL 문에서 SELECT 된 칼럼들을 위아래로 결합할 때 사용하며 위와 같은 기본적인 Syntax를 사용하며 중복행은 자동 제거됩니다.

 

proc sql;
    select column1, column2, ...
    from table1
    union
    select column1, column2, ...
    from table2;
quit;

 

 

 

■ UNION 예시

아래는 2개의 데이터셋을 UNION 문을 활용해 결합하는 예제입니다.

데이터1)

data DATA1;
    length name $10 dept $10;
    input name $ dept $ age;
    datalines;
김제니 영업 28
안유진 개발 31
박지훈 인사 26
;
run;

 

 

 데이터2)

data DATA2;
length name $10 dept $10;
input name $ dept $ age;
datalines;
최유진 마케팅 29
안유진 개발 31
최예원 영업 33
;
run;

 

 

 

■ UNIOIN

 

DATA1과 DATA2 데이터를 하나로 합친 결과값입니다.

UNION 문은 중복 데이터를 자동으로 제거하는 특징이 있어서 '안유진 개발 31' 데이터가 두개의 데이터셋에 모두 존재하지만 결과값에서는 한번만 출력됩니다.

 

 

proc sql;
select *
from DATA1
union
select *
from DATA2;
quit;


image.png

 

 

 

 

 

■ UNION ALL

UNION ALL의 두개의 데이터셋을 결합하지만 사용하는 데이터 중 중복값이 있으면 중복을 유지하면서 결과값을 출력하는 구문입니다.

아래의 결과값을 보면 위 UNION 예제와 다르게 '안유진 개발 31'이 2번 출력되는 것을 확인할 수 있습니다.

 

 

proc sql;
select *
from DATA1
union all
select *
from DATA2;
quit;

 image.png

 

 

Contributors
Version history
Last update:
yesterday
Updated by:

Catch up on SAS Innovate 2026

Nearly 200 sessions are now available on demand with the SAS Innovate Digital Pass.

Explore Now →
Article Labels
Article Tags