SAS通过Merge实现SQL中in操作

场景

假设有某班学生名单列表(小表)name_list(name id),以及全校学生信息数据表(大表)student_info(name id parent address email),现在需要根据全校学生名单列表name_list,获取班级名单中学号id对应学生的信息。

SQL代码

select * from student_info t1
where t1.name in (select name from name_list)

SAS代码实现

  • 依据学号id对两个数据表进行排序,排序后才可以进行Merge操作
proc sort data=name_list;
by id;
run;

proc sort data=student_info;
by id;
run;
  • 使用Merge操作进行筛选匹配
data class_student_info;
merge name_list(in=a) student_info(in=b);
by id;
if (a=1 & b=1);
run;
  • 其中in=a表示a为是否在name_list存在该观测,若存在则a为1,若不存在则为0
上一篇:[LeetCode] 56. Merge Intervals_Medium Tag: sort


下一篇:P3031