サーチ…
前書き
各データベースは異なるテーブルの集合であり、各テーブルには異なるデータが組織的に格納されています。データを扱う際に、必要な情報は複数のテーブルに分散しています。必要な出力を得るためには、結合/マージが必要です。
SAS Proc SQL
、 Proc SQL
を使用している間にジョインを使用し、 Data step
中にマージを使用しProc SQL
。ここでは、 Proc SQL
内での結合についてのみ説明しProc SQL
。
パラメーター
結合のタイプ | 出力 |
---|---|
Proc SQL | SAS内のSQLプロシージャ |
テーブルの作成 | SASデータセットを作成します。 |
選択 | それぞれのデータセットから必要な変数を選択します。 |
どこで | 特定の条件を指定します。 |
終了する | プロシージャを終了する |
備考
冒頭で述べたように、 Merge
をdata 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には、両方のテーブルのすべてのレコードが含まれ、記入され.
いずれかの側で不足している試合のために。