我正在尝试运行以下代码来更新click_summ表中数据的表摘要。
data temp(index=(comp=(card_number package_sk)));
set click_summ(where=(^missing(e_1st_click_dt)));
keep card_number package_sk e_1st_click_dt;
run;
data summary(drop=new_date) ;
set summary;
set temp(rename=(e_1st_click_dt= new_date) in=a) key=comp;
if a then do;
e_1st_click_dt = min(e_1st_click_dt,new_date);
end;
else
_ERROR_ = 0; /*No need for IORC errors*/
run;
这段特殊的代码抛出错误说:
错误:已为OUTPUT打开ORACLE表SUMMARY。此表已存在,或者存在名称冲突 与现有对象。此表不会被替换。该引擎不支持REPLACE选项。
同样的工作是什么?这个问题与我之前提出的问题(Summerizing a table in SAS)
有关答案 0 :(得分:0)
只需将表名从摘要更改为其他内容并尝试..我们不确定是否可以使用摘要作为表名,因为proc摘要在那里...不确定但是试试看
答案 1 :(得分:0)
正如错误消息所示,您无法在DATA-step中替换oracle表。它的解决方法是:
1)在临时SAS数据集中进行所有数据操作;
2)使用PROC SQL删除原始Oracle表中的所有行... DELETE ...;
3)使用PROC APPEND将新数据(临时数据集)添加到空Oracle表。
答案 2 :(得分:0)
data temp;
set click_summ(where=(^missing(e_1st_click_dt)));
keep card_number package_sk e_1st_click_dt;
run;
data summary(drop=new_date) ;
modify summary temp(rename=(e_1st_click_dt= new_date) in=a);
by card_number, package_sk;
if a then do;
e_1st_click_dt = min(e_1st_click_dt,new_date);
end;
else
_ERROR_ = 0; /*No need for IORC errors*/
run;
修改是关键。这也适用于Oracle表。而且速度也很快。