【问题标题】:Syntax error when creating a table in sas在 sas 中创建表时出现语法错误
【发布时间】:2022-01-22 18:18:58
【问题描述】:

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

据说代码应该没问题,空格是通过post放在宏变量中的,实际上它返回的错误是语法,它并没有告诉我它没有找到这样的日期或类似的东西。

这是我的代码:

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 结束,就在) 和 "end" 之前

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, ^=, |, ||, ~=. 

它在 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.

如果您能帮我找出错误,我将非常感激,非常感谢您。

【问题讨论】:

  • SAS 和 MySQL 有什么关系?调整标签列表。
  • 我在 sas 中使用 sql proc
  • end 在这个脚本中似乎相当不必要
  • 您是如何创建宏变量 YESTERDAY 和 BEFORE_YESTERDAY 的?它们包含什么文字?

标签: sql sas


【解决方案1】:

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

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

试试下面的代码:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2021-09-19
    • 2019-05-03
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多