2016-05-25 6 views
2

私はこのAxaptaのいくつかの条件を使ってフィールドを合計するにはどうすればよいですか?

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 

のようなユーザーテーブルを持っていると私はこの

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の2番目の月には、最初の月と2番目の月の値を加算する必要があります。 X ++でこの集計をどうすればできますか?

誰でも手伝ってもらえますか?

答えて

4

は、これは、テーブル上の表示方法として行うことができます。

display Amount total() 
{ 
    return (select sum(Value) of Table 
       where Table.Id == this.Id && 
         Table.Date <= this.Date).Value; 
} 

変更テーブル名とフィールド名をあなたにフィットします。

これは最速の方法ではない可能性があります。たとえば、レポートのコンテキストでは、各ID(マップ内)の実行中の合計を維持する方がよい場合があります。

また、それは、このような選択で行うことができます

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 
{ 
    ... 
} 

それは選択集合体であるので、あなたは、指名手配フィールド上のグループにする必要があります。

+0

通常のselect文でどのように記述できますか? – Ert

+0

アップデートを参照してください。 –

+0

ありがとう、それはあまりにも助けた – Ert

関連する問題