Proc Sql Select Into 正在创建一个我无法调用的临时变量

Posted

技术标签:

【中文标题】Proc Sql Select Into 正在创建一个我无法调用的临时变量【英文标题】:Proc Sql Select Into Is Creating a Temporary Variable that I can't Call 【发布时间】:2020-02-04 14:02:01 【问题描述】:

我正在尝试使用 proc sql select into 创建一个变量,然后尝试稍后调用。这个变量是平均价格(BlockPrice)。

proc sql;
   create table Block_Price_Calc as 
   select mean(Price) Into : BlockPrice
from Data1
Where As_Of_Date >= '31MAR2015'd and As_Of_Date < '07APR2015'd;
quit;

%put &BlockPrice;

proc sql;
 create table Want as 
 select *,
     (&BlockPrice) as Block
 from Data2;
quit;

变量 BlockPrice 未被识别,它似乎被存储为临时变量。有什么想法吗?

【问题讨论】:

日志是什么?第一个 put 有效吗? 您不能在同一语句中使用 CREATE 创建数据集和使用 INTO 创建宏变量。你真正想做的是哪一个?此外,您的第二个查询引用了不同的数据集和不同的宏变量。 第一个put语句创建了一个临时变量,但是计算是正确的。我想存储 Data1 的平均值并在 Data2 中使用该计算的平均值创建一个新列。第二个 proc sql 中的错误是: ERROR 22-322: 语法错误,需要以下之一:!, !!, &, *, **, +, ',', -, '.', /, , =, >, >=, ?, AND, AS, CONTAINS, EQ, EQT, GE, GET, GT, GTT, LE, LET, LIKE, LT, LTT, NE, NET, OR, ^=, |, ||, ~=. 【参考方案1】:

INTO 子句不能在 CREATE TABLE 语句中使用。

proc sql; 
   select mean(Price) Into : BlockPrice
   from Data1
   Where As_Of_Date >= '31MAR2015'd and As_Of_Date < '07APR2015'd;
quit;

【讨论】:

以上是关于Proc Sql Select Into 正在创建一个我无法调用的临时变量的主要内容,如果未能解决你的问题,请参考以下文章

sas:proc sql select into 有多个输出

oracle中select缺少into?

使用 SELECT ... INTO 在 SQL Server 中创建表

PL/SQL:SELECT INTO 引发 ORA-00947

CREATE FUNCTION IN SQL select into

mysql中select into 和sql中的select into 对比