sas中的sql(5) 纵向操作数据集 Except、Intersect、Union、OuterUnion

SQL进行纵向操作的基本语法

proc sql;
select *
from table1
set-operator <all> <corr>
select *
from table2
set-operator <all> <corr>
select *
from table3;

1:几种set操作符 Except、Intersect、Union、OuterJoin 

Except、Intersect、Union三种set符号是默认进行unique处理,当进行unique处理时会进行如下两步操作

1. PROC SQL eliminates duplicate (nonunique) rows in the tables.
2. PROC SQL selects the rows that meet the criteria and, where requested, overlays columns.

当进行的操作同时需要展现unique和duplicate行时则只会进行第二步,忽略第一步。

 

Except、Intersect、Union三种set符号对于列的处理时按位置操作,不管对应列的名称(有别名的根据别名来)是否相同。当重叠时,按第一张表的名称命名当前列,如果无名称则以第二张表对应列的名称来命名。

第一张表和第二张表对应列的数据类型必须相同,否则无法进行操作

OuterJoin不会覆盖列

 

Corr和All关键字

2.1:Except(默认列对应位置操作)

默认情况下此过程分两步进行

1:进行unique,将one中重复的行删除。

2:对照one two,将one在two中的行删除。

 

单独加上all关键字

不进行unique步,保持原样直接筛选。(省略第一步可以提高效率)

单独加上corr关键字

按列名进行合并,不同列名全部删除。

进行unique步骤,再将two在one中的相同行进行删除

同时加上all和corr

1:先按列名删减列

2:不进行unique,保留重复行,然后再在one中删除two中有的行。

 

 

2.2:intersect 语法一样,具体不懂再翻阅资料

2.3:union 语法一样,具体不懂再翻阅资料 union对非all的数据集会进行排序

2.4:outer Union(本来就有all的性质,所以无法和all一起使用)

1:selecting all rows (both unique and nonunique) from both tables

2:not overlaying columns.

 

无关键词情况下的语法

使用corr关键字