小编典典

SAS中的分区运行总计

sql

如何为现有数据集创建一个新列,该数据集是一个现有列的运行总数-由某些标识符分区?

ID |  Value |     New Value
---|--------|--------------------
1  |   10   |     10
1  |   5    |     15  = 10 + 5
1  |   3    |     18  = 10 + 5 + 3
2  |   45   |     45
2  |   15   |     60  = 45 + 15

我曾经在SQL(Oracle)中使用简单的SUM()OVER()语句来完成此操作,但是显然PROC SQL不支持该语法。

如果可能的话,我想在PROC SQL中完成此工作(我对SQL的经验比对SAS编码的经验要多得多)。

谢谢!

麦克风。


阅读 265

收藏
2021-04-14

共1个答案

小编典典

乔-您的答案出于任何原因都没有用,但是却使我处于正确的轨道上以找出答案。谢谢!

data want;
    set have;
    by id;
    if first.id then running_total = 0;
    if first.id then retained_total = 0;
    running_total = retained_total + value;
    retained_total = running_total;
    retain retained_total;
run;
2021-04-14