在 sas 中创建 table 时出现语法错误

Syntax error when creating a table in sas

我正在学习用 sas 和 sql 编程,我想创建一个 table 包含昨天的值(我已经将它存储在宏变量 & 昨天),区别在天量和昨天量和前天量之间。

按理说代码应该没问题,空格是post放在macrovariables里面的,其实错误是returns是语法,没告诉我没找到这样的日期或类似的日期。

这是我的代码:

PROC SQL;
   CREATE TABLE WORK.QUERY_FOR_TRANSPOSED_DAYBEFORE AS 
         SELECT &yesterday. AS dia_ayer, 
          abs((t1."    &yesterday."n - t1."    &before_yesterday."n) / t1."    &before_yesterday."n) end AS Diferencia_dias, 
          t1."    &before_yesterday."n, 
          t1."    &yesterday."n
      FROM WORK.Transposed_daybefore t1;
QUIT;

我在 & before_yesterday 之后收到此语法错误。 "N) 结束为 Difference_days,就在"结束"之后和之前"

ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, ',', -, /, <, <=, <>, =, >, >=, ?, AND, AS, 
              CONTAINS, EQ, EQT, FROM, GE, GET, GT, GTT, LE, LET, LIKE, LT, LTT, NE, NET, OR, ^=, |, ||, ~=. 

它 returns 这个错误就在 FROM:

之前
ERROR 22-322: Syntax error, expecting one of the following: un nombre, ;, (, ',', ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP, HAVING, 
              INNER, INTERSECT, JOIN, LEFT, NATURAL, NOMISS, ORDER, OUTER, RIGHT, UNION, WHERE.  

ERROR 76-322: Syntax error, statement will be ignored.

如果您能帮我找出错误,我将不胜感激,在此先感谢您。

我试图复制你的代码,尽管我没有完全理解你想要实现的目标。

首先,让我们尝试删除 select 子句中的 end。 其次,您试图通过 t1. &yesterday 访问 table 中的宏变量,这似乎也是错误的。

试试下面的代码:

PROC SQL;
   CREATE TABLE WORK.QUERY_FOR_TRANSPOSED_DAYBEFORE AS 
         SELECT &yesterday. AS dia_ayer, 
          abs((&yesterday - &before_yesterday) / &before_yesterday) AS Diferencia_dias, 
          &before_yesterday, 
          &yesterday
      FROM WORK.Transposed_daybefore t1;
QUIT;