首页 > 代码库 > sas中的sql(5) 纵向操作数据集 Except、Intersect、Union、OuterJoin
sas中的sql(5) 纵向操作数据集 Except、Intersect、Union、OuterJoin
SQL进行纵向操作的基本语法
proc sql;select *from table1set-operator <all> <corr>select *from table2set-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关键字
sas中的sql(5) 纵向操作数据集 Except、Intersect、Union、OuterJoin