美文网首页
SAS编程:SQL中的EXCEPT操作

SAS编程:SQL中的EXCEPT操作

作者: 野藤_ | 来源:发表于2021-10-17 21:35 被阅读0次

在SQL中的数据集拼接操作中,我使用最多的情况是左拼接,也是(Left Join),用于从第二个数据集中获取一些必要的变量。对于一些复杂的拼接,我一般就在Data步中,使用merge语句+in选项进行处理。虽然,有时候需要对数据集提前进行额外的处理,但是这样的程序可读性比较强。换句话说,SQL中的EXCEPT语句还是比较少的频率使用的。

EXCEPT操作是SQL中的一个数据集操作(set-operator ),作用是获取只在第一个查询中出现的记录,如下图所示:

EXCEPT

具体的语法如下:

select columns from table
except
select columns from table;

这个操作与Data步中merge的if a and not b;是一个作用,按理说,对于同一个效果,只需要了解一个方法就好,没必要了解多个。但是,在一种特定的情况下,我比较喜欢使用SQL中EXCEPT来处理数据集。

举例说明,一个受试者有多条检测值记录,这时候要求如果受试者只要有一条检测记录满足某种条件就从分析人群中剔除。这个逻辑并不复杂,在Data步中可以添加条件语句将符合条件的记录删选出来,然后使用Proc Sort语句进行对受试者ID去重,最后将这个去重后的数据集与源数据拼接(if a and not b;)筛选出分析人群。

这样的操作,如果使用EXCEPPT操作就比较简洁了:

proc sql noprint;
  select distinct subjid from a
  except
  select distinct subjid from a where xxx;
quit;

当然,不管使用何种方法,只要能够实现要求的效果都是推荐的。代码的简洁只是锦上添花,只要结果正确,不简洁也没什么大不了。

以上。

相关文章

网友评论

      本文标题:SAS编程:SQL中的EXCEPT操作

      本文链接:https://www.haomeiwen.com/subject/bbiwoltx.html