1

このテーブルから取得したい:

  [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 でこれを行う最も簡単な方法は何でしょうか? 他の方法はどうですか?

ありがとう

4

2 に答える 2

2

あなたはSASを使用しているので、SASの方法で実行してください-PROC MEANS。

proc means data=fundsdata;
var fund;
class productcode clientno;
types productcode*clientno;
output out=sumbycombination sum(fund)=fund;
run;
于 2013-09-06T19:10:54.960 に答える
2

SELECT *クエリでの使用を停止します。SELECT で返す列を明示的に指定する必要があります。

Select * は厄介で悪意のあるものであり、使用されたとしても非常にまれにしか使用されません。

期待される結果を返すSQL Fiddleは次のとおりです。

select  ProductCode
        ,ClientNO
        ,sum(Fund) as Total
from    FundsData
group by 
        ProductCode
        ,ClientNO
于 2013-09-06T18:24:56.947 に答える