【问题标题】:How to merge two tables using SAS proc sql如何使用 SAS proc sql 合并两个表
【发布时间】:2021-12-28 06:12:24
【问题描述】:

这是我想在这里处理的考试数据表:

-来源数据

--一张桌子

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

--b 表 |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”表之间合并,如下所示。

-结果数据合并表

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;  

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

【问题讨论】:

    标签: sql sas proc


    【解决方案1】:

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

    • 在t1.STU_CODE_1 之后缺少,
    • quit; 之前缺少 ;

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

    data table_a;
    infile datalines4 delimiter="|";
    input stu_id stu_key stu_code_1 :$8.;
    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 :$8.;
        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;
    

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 2016-10-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      相关资源
      最近更新 更多