如何在 Axapta 中使用某些条件对字段求和?

How to sum a field using some conditions in Axapta?

我有一个这样的用户table

  ID     Date        Value
  ---------------------------
  1001   31 01 14    2035.1
  1002   31 01 14    1384.65
  1003   31 01 14    1011.1
  1004   31 01 14    1187.04
  1001   28 02 14    2035.1
  1002   28 02 14    1384.65
  1003   28 02 14    1011.1
  1004   28 02 14    1188.86
  1001   31 03 14    2035.1
  1002   31 03 14    1384.65
  1003   31 03 14    1011.1
  1004   31 03 14    1188.86
  1001   30 04 14    2066.41
  1002   30 04 14    1405.95
  1003   30 04 14    1026.66
  1004   30 04 14    1207.15

我想从这个 table 中求和,像这样

  ID     Date        Value       Total
  ---------------------------------------
  1001   31 01 14    2035.1     2035.1
  1002   31 01 14    1384.65    1384.65
  1003   31 01 14    1011.1     1011.1
  1004   31 01 14    1187.04    1187.04
  1001   28 02 14    2035.1     4070.2
  1002   28 02 14    1384.65    2769.3
  1003   28 02 14    1011.1     2022.2
  1004   28 02 14    1188.86    2375.9
  1001   31 03 14    2035.1     6105.3
  1002   31 03 14    1384.65    4153.95
  1003   31 03 14    1011.1     3033.3
  1004   31 03 14    1188.86    3564.76
  1001   30 04 14    2066.41    8171.71
  1002   30 04 14    1405.95    5180.61
  1003   30 04 14    1026.66    4059.96
  1004   30 04 14    1207.15    4771.91

我有 id,对于第一个月的每个 id,它应该写为总值,对于该 id 的第二个月,它应该加上第一个月 + 第二个月的值,它应该像这样继续下去.我如何在 X++ 中进行求和?

谁能帮帮我?

在table:

上可以作为显示方式来完成
display Amount total()
{
    return (select sum(Value) of Table 
                where Table.Id == this.Id &&
                      Table.Date <= this.Date).Value;
}

根据您的需要更改 table 和字段名称。

但这可能不是最快的方法。在报告上下文中,最好为每个 ID(在地图中)保留 运行 总数。

也可以像这样在 select 中完成:

Table table1, table2
while select table1
    group Date, Id, Value
    inner join sum(Value) of table2 
    where table2.Id == table1.Id &&
          table2.Date <= table1.Date
{
    ...
}

您需要根据需要的字段进行分组,因为它是一个聚合 select。