Berechnung von Top10 Listen
Hallo zusammen,
folgender Code will nicht so richtig funktionieren. (siehe unten)
Was soll er machen?
Ich bin in einem Event und hier gab es Einnahmen und Ausgaben. Ich möchte jetzt eine Top10 Liste für die Einnahmen und Ausgaben. Ich suche mir nun also alle Kontakte, die ein "Kostenteil" bei der Veranstaltung hatten und eine Ausgabe waren. Das ganze lass ich gleich noch nach der Summe aller Ausgaben bei diesem Event sortieren. Die Liste lass ich dann auf 10 Kontakte kürzen.
Dann lasse ich es mir noch ausgeben mit dem Namen und der Summe aller Ausgaben bei dieser Veranstaltung. ...so der Plan.
Was funktioniert nicht?
let myKostenteile := ii.Kostenteile[Event = my and Anteilswert < 0]
nehme ich nur "Event = my" funktioniert es. Das kann aber problematisch werden, wenn der Kontakt nicht nur Ausgaben, sondern auch Einnahmen hatte. Bei obiger Code-Zeile werden mir dann aber alle Kostenteile die Negativ sind zusammen gerechnet. "Event=my" wird irgendwie nicht mehr berücksichtigt. Wo ist hier mein Denkfehler? Muss etwas in Klammern?
Kompletter Code:
let my := this;
let myKontakte := ((select Kontakte where cnt(Kostenteile[Event = my and Anteilswert < 0]) > 0) order by sum(Kostenteile[Event = my and Anteilswert < 0].Anteilswert));
let myTopKontakte := slice(myKontakte, 0, 10);
join(for ii in myTopKontakte do
let myKostenteile := ii.Kostenteile[Event = my and Anteilswert < 0];
let mySum := sum(myKostenteile.Anteilswert);
rpad(ii.Name, 40, ".") + "" + lpad(text(mySum), 15, ".")
end, "
") +
"
" +
if cnt(myKontakte) > 10 then "..." end
Vielen Dank schonmal vorab!
Johannes
3 Antworten
-
Was mich noch mehr verwirrt:
Folgender Code scheint zu funktionieren...
let my := this; let myKontakte := ((select Kontakte where cnt(Kostenteile[Event = my and Anteilswert < 0]) > 0) order by sum(Kostenteile[Event = my and Anteilswert < 0].Anteilswert)); let myTopKontakte := slice(myKontakte, 0, 10); join(for ii in myTopKontakte do let myKostenteile1 := ii.Kostenteile[Event = my]; let myKostenteile := myKostenteile1[Anteilswert < 0]; let mySum := sum(myKostenteile.Anteilswert); rpad(ii.Name, 40, ".") + "" + lpad(text(mySum), 15, ".") end, " ") + " " + if cnt(myKontakte) > 10 then "..." end
Wenn ich den Filter also zweistufig baue, kommt genau das erwartete Ergebnis.
Kostenteile[Event = my and Anteilswert < 0]
die Kombination "and" scheint irgendwie nicht das zu machen, was ich erwarte...
Danke für Input :-)
Content aside
- vor 10 StundenZuletzt aktiv
- 3Antworten
- 22Ansichten
-
2
Folge bereits