我有12列,我想通过sql添加它们。我试过了:
proc sql;
select*,sum(a1-a12) as total
from tablename;
quit;
然而这不起作用。有没有替代方案,或者我们只能在数据步骤中使用单哈希和双哈希。
答案 0 :(得分:2)
如果要在同一观察中添加值,则需要使用SAS函数sum(,...)
而不是SQL聚合函数sum()
。您当前的代码看起来像后者,因为它只列出了一个值,即变量A1和A12之间的差异。这是因为PROC SQL无法识别变量列表。您需要列出所有变量。
select *,sum(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) as total
from have
;
答案 1 :(得分:0)
如果你想在SQL中使用它,因为除此之外你还在使用其他SQL功能,请创建一个视图。
data have_v/view=have_v;
set have;
total = sum(of a1-a12);
run;
proc sql;
select * from have_v; *presumably you do other things here;
quit;
答案 2 :(得分:0)
在某些情况下,您不知道有多少变量,或者您不想对其进行硬编码。在这种情况下语法是:sum(of< variable>:);
data test;
a1=1;
a2=2;
/*number 3 is missing*/
a4=4;
a5=5;
run;
data test2;
set test;
sum_of_all_As= sum(of a:);
run;
有关更多提示和技巧,请参阅:http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000245953.htm