2016-05-25 10 views
2

Ich habe einen Benutzertabelle wie dieseWie summiere ich ein Feld mit einigen Bedingungen in 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 

Und ich möchte, wie diese für den ersten Monat für jede ID

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 

I id haben, eine Summe aus dieser Tabelle machen, sie schreiben sollte ist der Wert für die Summe und für den zweiten Monat dieser ID, sollte es den Wert des ersten Monats + zweiten Monats hinzufügen und es sollte so weitergehen. Wie kann ich diese Summierung in X ++ machen?

Kann mir jemand helfen?

Antwort

4

Es kann auf dem Tisch, als ein Anzeigeverfahren erfolgen:

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

ändern Sie die Tabellen- und Feldnamen zu Ihrem Sitz.

Dies ist möglicherweise nicht der schnellste Weg, es zu tun. In einem Berichtskontext ist es möglicherweise besser, eine laufende Summe für jede ID (in einer Karte) zu behalten.

Auch kann es in einer auserwählten wie folgt geschehen:

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

Sie müssen sich auf die wollten Felder Gruppe, weil es ein Aggregat wählen ist.

+0

Wie kann ich es in eine normale Select-Anweisung schreiben? – Ert

+0

Siehe das Update. –

+0

Danke, es hat zu viel geholfen – Ert