在 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;
我正在学习用 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;