0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

データテーブルの連結ー縦方向2 (異なる列名を統合する場合)

Last updated at Posted at 2021-02-13

テーブルとテーブルの連結には、縦方向(行が増える)と横方向(列が増える)の場合があります。
縦方向の場合は__集合__、横方向の場合は__結合__と言います。

集合には以下の3つのパターンがあります。
 和集合:複数のテーブルのレコードをすべて足す。
 積集合:複数のテーブルの共通するレコードを取り出す。
 差集合:他のテーブルと共通しないレコードを取り出す。

今回は前回 (https://qiita.com/MomonekoView/items/78f51b7385bec42d08ed) に引き続き、
和集合について、SAS プログラムと SQL をそれぞれ用いた例を紹介します。

行いたい操作は下記です。
image.png
・変数名が共通しているA列を結合。
・変数名が異なるB列とC列については、同じB列として結合。
・B列とC列など、結合される列どうしは同じデータ型である必要があります。

####① SAS プログラム

data table_3;
  set table_1 table_2(rename=(C=B));
run;

set ステートメントで縦に重ねます。
この時、 rename ステートメントにより、table_2 のC列の名前をB列に変換します。
image.png

####② SQL

create table table_3 as
select A, B from table_1
union all
select A, C from table_2;

SELECT文を union all でつなぐと、列名を最初の SELECT 文のテーブルに合わせて連結されます。
各SELECT文での変数の順番が新しいテーブルの列名に対応し、2つ目のSELECT文の列名が最初のSELECT文の列名へ変更されます。
(この場合、table_2 の C が table_1 の B へ変更される )
image.png
image.png

ちなみに union のみとすると、下記のように重複するデータはまとめられてから連結されます。

create table table_4 as
select A, B from table_1
union
select A, C from table_2;

image.png

####関連記事
データテーブルの連結-縦方向 1(異なる列名をそのまま残す場合)
データテーブルの連結-縦方向 3(積集合と差集合)
データテーブルの連結-横方向 1(完全外部結合)
データテーブルの連結-横方向 2(内部結合)
データテーブルの連結-横方向 3(左右の外部結合)
データテーブルの連結ー交差結合

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?