首页 > 解决方案 > 使用 proc sql 时 WHERE 子句的语法错误

问题描述

我是 SAS 新手,我需要重新创建使用 R 运行的查询。SAS 中的语法规则可能不同,但我看不出我在哪里出错了

表“旧”列:A、B、C、D、E

表“新”列:A、B、C、D、E

PROC SQL;
                create table delta as
                SELECT *
                FROM New
                WHERE
                (A, B, C)
                IN(
                SELECT (A, B, C)
                FROM New
                EXCEPT 
                SELECT A, B, C
                FROM Old);

QUIT;

我的代码应该根据 A、B、C 变量找到增量行。

逗号错误消息

WHERE(A, B, C): 错误 79-322: 期望 (.

标签: sqlsas

解决方案


我不在 sas 中,但可能是这个数据库不允许在 WHERE IN 子句中使用元组。

在这种情况下,您可以尝试将您的查询重构为内部连接

  SELECT *
  FROM New N 
  INNER JOIN  (
      SELECT A, B, C
      FROM New
      EXCEPT 
      SELECT A, B, C
      FROM Old
  ) T ON  T.A  = N.A 
        AND T.B  = N.B  
          AND T.C = N.C 

推荐阅读