サーチ…
前書き
各データベースは異なるテーブルの集合であり、各テーブルには異なるデータが組織的に格納されています。データを扱う際に、必要な情報は複数のテーブルに分散しています。必要な出力を得るためには、結合/マージが必要です。
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には、両方のテーブルのすべてのレコードが含まれ、記入され.いずれかの側で不足している試合のために。