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 有多个输出
使用 SELECT ... INTO 在 SQL Server 中创建表
PL/SQL:SELECT INTO 引发 ORA-00947