こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
こんな方におすすめ!
- SASプログラムの開発環境でSQLを実行する方法が知りたい。
- SQLを用いて複数テーブルを結合(JOIN)する方法が知りたい。
目次
【SAS実践】SQLを用いた複数テーブルの結合
SAS環境にSQLを記述し、複数テーブルを結合する方法について解説します。
テーブルの結合方法には上図に示す4つの方法があります。以下、それぞれ見ていきましょう!
【参考】SASとSQLを用いたデータ参照入門
SAS環境でSQLを実行する方法について詳しく知りたい方はこちらの記事をご覧ください。
【事前準備】サンプルのテーブルを作成
後述では、次のようなサンプルのテーブルデータを用いて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による予測モデリングなど様々な用途に利用できます。また金融や医療を代表とする様々な業界の分析業務で広く活用されています。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら