有条件的累计和

Cumulative sum with condition

我希望根据最初将每日金额添加到 Value,然后将每日金额添加到结果数字来导出累积列。

能不能帮帮忙,谢谢

Date Type Value Rate Cummulative
29/04/2022 A 128.61 32.00 256.61
28/04/2022 A 128.61 32.00 224.61
27/04/2022 A 128.61 32.00 192.61
26/04/2022 A 128.61 32.00 160.61

看看下面的示例脚本。重新加载后,CumulativeData table 将包含新列 Cumulative,这将是结果。

“魔法”正在以下表达式中发生:

if(RecNo() = 1, 
     Value + Rate, 
     peek(Cumulative) + Rate
) as Cumulative

在我们所说的表达式中:

  • 如果记录编号为 1(table 的第一行),则对 ValueRate 值求和。这是我们的“底数”,我们会累积到这个值
  • 对于下一行获取 Cumulative 列 (peek(Cumulative)) 的上述(上一行)值并添加当前行 Rate

有关 peek 功能的更多信息,请访问 documentation page

示例脚本:

RawData:
Load * Inline [
Date      , Type,   Value , Rate
29/04/2022, A   ,   128.61, 32.00
28/04/2022, A   ,   128.61, 32.00
27/04/2022, A   ,   128.61, 32.00
26/04/2022, A   ,   128.61, 32.00
];

// Dont foget to order the table in ascending order
CumulativeData:
Load 
  *,
  if(RecNo() = 1, 
       Value + Rate, 
       peek(Cumulative) + Rate
  ) as Cumulative
Resident
  RawData
Order By
  Date ASC
;

Drop Table RawData;

结果table: