2017-01-03 58 views
0

我有12列,我想通过sql添加它们。我曾尝试:Proc中的单双哈希sql

proc sql; 
select*,sum(a1-a12) as total 
from tablename; 
quit; 

但是这是行不通的。是否有替代方案,或者我们是否只能在数据步骤中使用单一和双重散列?

回答

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 
; 
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;