SAS中的组合SUM

时间:2013-09-06 18:17:54

标签: sql sas

我想从这张表中得到:

  [ProductCode] [ClientNO] [Fund]
     11            3         100
     12            4          45
     11            3          18
     12            4           5

对此:

[ProductCode] [ClientNO] [Fund]
     11            3        118
     12            4         50

当所有给定的变量都匹配时,基本上总和FUND

我差不多有这句话:

 Proc sql;
        create table SumByCombination as
        select *, sum(Fund) as Total
        from FundsData
        group by ProductCode,ClientNO
        ;
     quit;

但是有了这个,我得到所有的行(重复)和一个SUM列。

编辑:这就是我得到的。

  [ProductCode] [ClientNO] [_SUM_]
     11            3         118
     12            4          50
     11            3         118
     12            4          50

我知道这应该是一个明智的选择,但我一直陷入困境。 在Proc SQL中最简单的方法是什么?其他方法怎么样?

由于

2 个答案:

答案 0 :(得分:2)

在查询中停止使用SELECT *。您应该明确标识希望SELECT返回的列。

选择*是令人讨厌和邪恶的,如果有的话,应该很少使用。

以下是SQL Fiddle,它会返回您的预期结果

select  ProductCode
        ,ClientNO
        ,sum(Fund) as Total
from    FundsData
group by 
        ProductCode
        ,ClientNO

答案 1 :(得分:2)

你正在使用SAS,所以使用SAS方式 - PROC意味着。

proc means data=fundsdata;
var fund;
class productcode clientno;
types productcode*clientno;
output out=sumbycombination sum(fund)=fund;
run;