Sas Proc-sql中的单散列和双散列

Sas Proc-sql中的单散列和双散列,sas,Sas,我有12列,我想通过sql添加它们。我试过: proc sql; select*,sum(a1-a12) as total from tablename; quit; 然而,这是行不通的。是否有替代方法,或者我们只能在数据步骤中使用单哈希和双哈希。如果要在同一观察中添加值,则需要使用SAS函数sum(,…),而不是SQL聚合函数sum()。当前代码与后面的代码类似,因为它只列出了一个值,即变量A1和A12之间的差异。这是因为PROC SQL不识别变量列表。您需要列出所有变量 select *,

我有12列,我想通过sql添加它们。我试过:

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

然而,这是行不通的。是否有替代方法,或者我们只能在数据步骤中使用单哈希和双哈希。

如果要在同一观察中添加值,则需要使用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
;

如果您希望在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;

在某些情况下,您不知道有多少变量,或者不想硬编码。本例中的语法是:sum(of:)

有关更多提示和技巧,请参阅:

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;