Sql 如何在SAS中对表中的所有数字列求和?

Sql 如何在SAS中对表中的所有数字列求和?,sql,sas,Sql,Sas,我有一个表,根据我的初始输入,它的列数是可变的。是否有一个函数可以对该表的所有数值列求和,而不指定每列的名称 现在,我在procsql命令中硬编码了每个列名 CREATE TABLE &new_table_name AS (SELECT SUM(CASE WHEN col1 = &state THEN 1 ELSE 0 END) AS month_01, SUM(CASE WHEN col2 = &state THEN 1 ELSE 0 END) AS

我有一个表,根据我的初始输入,它的列数是可变的。是否有一个函数可以对该表的所有数值列求和,而不指定每列的名称

现在,我在procsql命令中硬编码了每个列名

CREATE TABLE &new_table_name AS 
(SELECT SUM(CASE WHEN col1 = &state THEN 1 ELSE 0 END) AS month_01,
        SUM(CASE WHEN col2 = &state THEN 1 ELSE 0 END) AS month_02,
        SUM(CASE WHEN col3 = &state THEN 1 ELSE 0 END) AS month_03,
        SUM(CASE WHEN col4 = &state THEN 1 ELSE 0 END) AS month_04,
        SUM(CASE WHEN col5 = &state THEN 1 ELSE 0 END) AS month_05
);
示例输入如下所示:

name    m1  m2  m3  m4
aa      1   7   7   1
ab      2   4   2   
ac      1   1       
ad      1   3   1   1
ae      2   1   3   
那么样本输出将是

name    m1  m2  m3  m4
        7   16  13  2

您正在寻找
PROC MEANS
。或者任何总结过程

data have;
infile datalines missover;
input name $ m1  m2  m3  m4;
datalines;
aa      1   7   7   1
ab      2   4   2   
ac      1   1       
ad      1   3   1   1
ae      2   1   3   
;;;;
run;

proc means data=have;
  output out=want sum=;
run;
class
语句将允许您按状态或其他方式进行分组<代码>其中在
PROC-MEANS
中也可以很好地进行过滤

关闭
var
语句将调用所有数值变量,或者您可以放入
var
语句以进行限制,例如

var m1-m4;

正如Reeza在评论中指出的那样。

您正在寻找
PROC MEANS
。或者任何总结过程

data have;
infile datalines missover;
input name $ m1  m2  m3  m4;
datalines;
aa      1   7   7   1
ab      2   4   2   
ac      1   1       
ad      1   3   1   1
ae      2   1   3   
;;;;
run;

proc means data=have;
  output out=want sum=;
run;
class
语句将允许您按状态或其他方式进行分组<代码>其中在
PROC-MEANS
中也可以很好地进行过滤

关闭
var
语句将调用所有数值变量,或者您可以放入
var
语句以进行限制,例如

var m1-m4;

正如Reeza在评论中指出的那样。

如果你没有名字,你需要构建一个动态查询。发布样本数据,输入/输出。我想知道这是否应该是一个过程转置。您的代码似乎与所述问题无关。您不能在PROC SQL中使用变量列表。我尝试对其进行求和的矩阵是一个post转置数据集。为什么不使用PROC MEANS或类似工具?如果您没有名称,则需要生成一个动态查询。post示例数据,in/out。我想知道这是否应该是一个过程转置。您的代码似乎与所述问题无关。您不能在PROC SQL中使用变量列表。我尝试对其进行求和的矩阵是一个后转置数据集。为什么不使用PROC MEANS或类似的方法?除了Joe的答案之外,您还可以在PROC中使用变量快捷方式,例如m1-m4或m:(所有变量均以m开头).除了Joe的答案,您还可以在程序中使用变量快捷方式,如m1-m4或m:(所有变量均以m开头)。