我有一个带有数值变量to
,from
和weight
的SAS数据集。某些观察值weight
的值为0。我需要将所有weight
值都设为正数,因此我希望只为所有weight
值添加1。
如何使用Proc SQL做到这一点?
我尝试了以下操作,但它不起作用:
proc sql;
update mylib.mydata
set weight=weight+1;
quit;
错误是:
ERROR: A CURRENT-OF-CURSOR operation cannot be initiated because
the column "weight" cannot be used to uniquely identify a row
because of its data type.
此外,mylib
指的是Greenplum设备。这可能是问题......
答案 0 :(得分:1)
如果您具有更新该表的数据库权限,则可能需要使用SAS / Access传递工具。您需要知道正确的语法才能工作。这是一个不起作用的例子:
proc sql;
connect to greenplm as dbcon
(server=greenplum04 db=sample port=5432 user=gpusr1 password=gppwd1);
execute (
/* Native code goes here */
update sample.mydata
set weight=weight+1
) by dbcon;
quit;
连接字符串与定义“mylib”libref的LIBNAME
上使用的连接字符串相同。
但是,如果您真的想要创建SAS数据集(不更新真实表),可以通过简单的数据步骤来实现:
data mydata;
set mylib.mydata
weight = weight + 1;
run;
这将创建表格的副本,可以与其他SAS程序一起使用。
答案 1 :(得分:0)
在prosgress.com上查看this note。您可能需要将UPDATE_MULT_ROWS=YES
添加到库定义中。