【SAS言語】SQL文を用いた複数テーブルの結合方法

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • SASプログラムの開発環境でSQLを実行する方法が知りたい。
  • SQLを用いて複数テーブルを結合(JOIN)する方法が知りたい。
目次

【SAS実践】SQLを用いた複数テーブルの結合

SAS環境にSQLを記述し、複数テーブルを結合する方法について解説します。

テーブルの結合方法には上図に示す4つの方法があります。以下、それぞれ見ていきましょう!

【参考】SASとSQLを用いたデータ参照入門

SAS環境でSQLを実行する方法について詳しく知りたい方はこちらの記事をご覧ください。

あわせて読みたい
【SAS言語】SQLのSELECT文によるデータ参照・集計方法 SASプログラム内にSQLのSELECT文を記述し、データ参照・集計する方法について解説します。

【事前準備】サンプルのテーブルを作成

後述では、次のようなサンプルのテーブルデータを用いてSAS言語を実行します。プログラムの先頭に以下のコードを貼り付けておきましょう。

コード

/* 
================================================
SQLサンプルデータを準備 
================================================
*/

data employee;
input id$ employee$ department$;
datalines;
1000 maike tokyo
1001 kety aich
1002 momo osaka
run;

data department;
input department$ address$ phone$;
datalines;
tokyo minato 09000000000
osaka umeda 08000000000
;
run;

出力イメージ

従業員テーブルEMPLOYEE TABLEと部署テーブルDEPARTMENT TABLEの2つのテーブルを用います。

EMPLOYEE
=========================================
id	 employee	department	
1001	kety	      aich
1002	momo	     osaka
1000	maike	     tokyo
=========================================


DEPARTMENT
=========================================
department	address	          phone
aich	     nagoya	    07000000000
osaka	      umeda	    08000000000
tokyo	     minato	    09000000000
=========================================

内部結合

2つのテーブルを内部結合したい場合、INNER JOINのメソッドを用いた以下のコードで実現できます。

コード

PROC SQL;
	SELECT E. *,  D.address, D.phone  
	FROM employee AS E INNER JOIN department AS D
	ON E.department = D.department;
QUIT;

出力イメージ

id	 employee	department	address	   phone
1000	maike	     tokyo	minato	09000000
1002	momo	     osaka	 umeda	08000000

左外部結合・右外部結合

2つのテーブルを左結合したい場合、LEFT JOINのメソッドを用いた以下のコードで実現できます。また、右外部結合を実行したい場合、RIGHT JOINと記述すると良いです。

コード

PROC SQL;
	SELECT E. *,  D.address, D.phone  
	FROM employee AS E LEFT JOIN department AS D
	ON E.department = D.department;
QUIT;

出力イメージ

id	employee	department	address	   phone
1001	kety	aich	 	 
1002	momo	osaka	      umeda	08000000
1000	maike	tokyo	     minato	09000000

完全外部結合

2つのテーブルを完全外部結合したい場合、FULL JOINのメソッドを用いた以下のコードで実現できます。

コード

PROC SQL;
	SELECT E. *,  D.address, D.phone  
	FROM employee AS E FULL JOIN department AS D
	ON E.department = D.department;
QUIT;

出力イメージ

id	employee	department	address	   phone
1001	kety	aich	 	 
1002	momo	osaka	      umeda	08000000
1000	maike	tokyo	     minato	09000000

【参考】SASプログラミング記事一覧

当サイトではSASを用いたプログラミング解説記事を多数掲載しております。

SASはデータ処理・分析をはじめ、高度な統計解析や機械学習・AIによる予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次