为何使用' NA' =有可能在SAS中返回一组值吗?

时间:2015-10-27 23:38:53

标签: sas

我对以下一段代码有一个简短的问题。为什么我们可以使用'NA' =作为子查询?我的意思是,子查询可能会返回一组值,而不是一个值,对吧?谁能告诉我原因?非常感谢您的时间和关注。

proc sql;
   select lastname, first name
   from sasuser.staffmaster
   where 'NA' = 
      (select jobcategory
       from sasuser.supervisors 
       where staffmaster.empid = supervisors.empid);
quit;

再次感谢。

1 个答案:

答案 0 :(得分:0)

假设EMPID是员工的唯一ID(我希望它是?),并且每个员工只有一个主管,该查询应该每次都解析为一行。 (当然,从外部查询返回的每一行的单行 ,这很重要。想想它就像一个连接 - 这基本上是什么,一个稍微奇怪的措辞连接,通常会变成了SQL解析器的实际连接。)

但是,一般情况下,它可以解析为多行。 SAS将允许您进行查询,如果它只返回一行,它就可以工作;如果它返回2+行,则失败。正如Quentin在评论中指出的那样,这是一个correlated subquery