如何使用 SAS proc sql 合并两个表

How to merge two tables using SAS proc sql

这是我要在此处处理的考试数据 table:

-原始数据

--一个table

STU_ID STU_KEY STU_CODE_1
123 2002123 A121
124 2002124 A122
125 2002125 A123
126 2002126 A124

--b table |STU_ID|STU_KEY|STU_CODE_2| |------|--------|----------| |123 |2002223|B121 | |124 |2002224|B122 | |125 |2002225|C123 | |126 |2002226|C124 | |127 |2002127|C125 |

我想使用 SAS proc sql 的代码在 'a' 和 'b' table 之间合并,如下所示。

-结果数据合并table

STU_ID STU_KEY STU_CODE_1 STU_CODE_2
123 2002123 A121
123 2002223 B121
124 2002124 A122
124 2002224 B122
125 2002125 A123
125 2002225 C123
126 2002126 A124
126 2002226 C124
127 2002127 C125
 '''error code'''
 PROC SQL;
 CREATE TABLE a_b_merge as
 SELECT t1.STU_ID, 
        t1.STU_KEY, 
        t1.STU_CODE_1
        t2.STU_CODE_2
 FROM a as t1 full join b as t2
 ON t1.STU_ID=t2.STU_ID
 QUIT;  

让我知道如何解决这个问题。

您的查询中存在几个语法错误:

  • t1.STU_CODE_1
  • 之后缺少 ,
  • quit;
  • 之前少了一个;

为了得到预期的结果,使用OUTER UNION CORROUTER UNION 保留两个中间结果集中的所有行和所有列,并且 CORR 导致 PROC SQL 按名称匹配 table 表达式中的列。还要添加一个 ORDER BY 以匹配预期的输出。

data table_a;
infile datalines4 delimiter="|";
input stu_id stu_key stu_code_1 :.;
datalines4;
123|2002123|A121
124|2002124|A122
125|2002125|A123
126|2002126|A124
;;;;

data table_b;
    infile datalines4 delimiter="|";
    input stu_id stu_key stu_code_2 :.;
    datalines4;
123|2002223|B121
124|2002224|B122
125|2002225|C123
126|2002226|C124
127|2002227|C125
;;;;

proc sql;
    create table want as
    select * from table_a 
    outer union corr
    select * from table_b
    order by stu_id, stu_key;
quit;