サーチ…


前書き

各データベースは異なるテーブルの集合であり、各テーブルには異なるデータが組織的に格納されています。データを扱う際に、必要な情報は複数のテーブルに分散しています。必要な出力を得るためには、結合/マージが必要です。

SAS Proc SQLProc SQLを使用している間にジョインを使用し、 Data step中にマージを使用しProc SQL 。ここでは、 Proc SQL内での結合についてのみ説明しProc SQL

パラメーター

結合のタイプ出力
Proc SQL SAS内のSQLプロシージャ
テーブルの作成 SASデータセットを作成します。
選択それぞれのデータセットから必要な変数を選択します。
どこで特定の条件を指定します。
終了するプロシージャを終了する

備考

冒頭で述べたように、 Mergedata step内で使用することもできます。これについては別のトピックで説明します。ジョインは、要件に応じてデータをブレンドして統一するために非常に重要な役割を果たします。

垂直接合

垂直結合は、データセットBをデータセットAに追加します。たとえば、データセットAでは1月17日、データセットBでは2月17日の売上があります.1月と2月の両方の売上高を持つデータセットCを作成するには、垂直結合を使用します。

PROC SQL;
CREATE TABLE C AS
SELECT *
FROM A
UNION 
SELECT *
FROM B;
QUIT;

現在、データセットCはAとBの両方の観測値を持ち、垂直方向に追加されています。

内部結合

内部結合は、両方のテーブルから一致する値を持つレコードを含むデータセットを作成します。たとえば、顧客情報を含むデータセットAと、クレジットカードの詳細を含むデータセットBがあります。データセットAの顧客のクレジットカードの詳細を取得するには、データセットCを作成します

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUM
FROM CUSTOMER A, CC_DETAILS B
WHERE A.CUSTOMERID=B.CUSTOMERID
QUIT;

データセットCは、両方のデータセットからの一致する観測値のみを有する。

左結合

左結合は、左のデータセットのすべての観測値をそのキー値に関係なく返しますが、正しいデータセットの一致するキー値を持つ観測値のみを返します。上記と同じ例を考えてみると、

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A LEFT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;

データセットCには、左側のテーブルのすべての値と、右側のテーブルの一致した値または一致しない場合の欠損値が含まれます。

右結合

左結合と同様に、右結合は、右のデータセットからのすべての観測データと、左のテーブルからの一致したレコードを選択します。

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A RIGHT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;

データセットCには、右テーブルのすべての値と、左テーブルの一致値、または一致しない場合の欠損値が含まれます。

フル参加

全結合は、両方のデータセットからすべての観測値を選択しますが、各観測値のキー値が1つのテーブルにのみ存在する欠損値があります。

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A FULL JOIN CC_DETAILS B 
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;

データセットCには、両方のテーブルのすべてのレコードが含まれ、記入され.いずれかの側で不足している試合のために。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow