0

Kumulativer Umsatz

Hallo,

in meiner Datenbank wir jeden Monat 1 neuer Datensatz angelegt, in welchem u.a. der Monatsgewinn/verlust (X) berechnet wird. 

Nun benötige ich im immer im Laufe eines Geschäftsjahres monatlich eine kumulative Summe (Y) dieser Position, mit neuem Geschäftsjahr muss aber wieder von vorne begonnen werden.

Jan 23: Y (Jan 23) = X (Jan 23)
Feb 23: Y = X (Jan 23) + X (Feb 23)
März 23: Y = Y (Feb 23) + X (Mar 23)  - oder aber Y = X (Jan 23) + X (Feb 23) + X (Mar 23)
.....

Dez 23: Y = Y (Nov 23) + X (Dez 23)  - oder aber Y = X (Jan 23) + X (Feb 23) + X (Mar 23)....... + X (Dez 23).

Mit Jänner 24 soll das Ganze dann wieder mit

Jan 24: Y (Jan 24) = X (Jan 24)
....

Könnt ihr mir da vielleicht mit einem Lösungsansatz helfen?

Danke!!

10 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Hallo alexandra, mir stellt sich die Frage, wie die Tabelle mit den Monatsbeträgen genau aufgebaut ist. Wenn es da neben den Beträgen bspw. ein Feld für das Jahr und eines für den Monat gäbe, dann könnte man die Monatswerte ja einfach summieren. Als Beispiel für ein Formelfeld:

    let me := this;
    sum((select TABELLE where Jahr = me.Jahr and Monat <= me.Monat).BETRAG)
    

    Aber vielleicht habe ich die Aufgabenstellung auch nicht richtig verstanden.

    • alexandra
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Hallo,

    vielen Dank für die hilfreiche Antwort. Das funktioniert so grundsätzlich, ich habe nur eine - offenbar doch wichtige - Information unterschlagen, weil ich es nicht zu kompliziert machen wollte: Ich habe leider kein "gerades" Geschäftsjahr, sondern eines, das im Mai beginnt um im August aufhört. Somit muss ich immer ab Mai anfangen neu aufzuaddieren. Hast du hier vielleicht auch noch einen Trick für mich? Lg Alex

      • Torsten_Stang.1
      • vor 8 Monaten
      • Gemeldet - anzeigen

       vielleicht macht es Sinn, die Tabelle um Felder "Geschäftsjahr" und "Geschäftsmonat" zu erweiteren? Diese lassen sich beim Anlegen des Datensatzes sicher einfacher per Skript füllen als in der hier gewünschten Auswertung bestimmen... 

    • Ninox-Professional
    • planoxpro
    • vor 8 Monaten
    • Gemeldet - anzeigen
     said:
    [...] kein "gerades" Geschäftsjahr, sondern eines, das im Mai beginnt um im August aufhört.

     Dein Geschäftsjahr umfasst tatsächlich nur vier Monate?

      • alexandra
      • vor 8 Monaten
      • Gemeldet - anzeigen

       Uups, vertippt. Es beginnt im Mai und hört im darauffolgenden April auf.

      • Ninox-Professional
      • planoxpro
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Dachte schon, du hättest einen Eiswagen, der nur im Sommer fährt.😉

      Ja, Mai bis April ergibt Sinn. Wahrscheinlich würde man das auch rein technisch hinbekommen, aber ich würde in einem solchen Fall mit verschobenen Buchungsperioden arbeiten. Mai 2023 wäre dann bspw. die Buchungsperiode "23/24-01", Januar 2024 entspräche "23/24-09" usw. bis April 2024 = "23/24-12". Das neue Wirtschaftsjahr begänne im Mai 2024 als "24/25-01".

      Erzeugen könnte man die Buchungsperiode anhand der vorhandenen Felder 'Jahr' und 'Monat' (entweder als Formelfeld oder per Trigger in ein Datenfeld):

      let BuchMonat := if Monat >= 5 and Monat <= 12 then Monat - 4 else Monat + 8 end;
      if Monat < 5 then
         substr(text(Jahr - 1), 2, 2) + "/" + substr(text(Jahr), 2, 2) + "-" + format(BuchMonat, "00")
      else
         substr(text(Jahr), 2, 2) + "/" + substr(text(Jahr + 1), 2, 2) + "-" + format(BuchMonat, "00")
      end
      

      In der sum()-Formel könnte man dann auf die Buchungsperiode Bezug nehmen:

      let myBPJ := substr(BP, 0, 5);
      let myBPM := substr(BP, 6, 2);
      sum((select TABELLE where substr(BP, 0, 5) = myBPJ and substr(BP, 6) <= myBPM).BETRAG)
      

      Wobei BP für den Namen des Feldes mit der Buchungsperiode steht.

      Geht vermutlich eleganter, aber so könnte es funktionieren.

    • alexandra
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Lieber @torsten_stang.1 und @planox.pro,

    ich habe die Berechnung auf der Basis des Buchungsperiodenvorschlages umgesetzt - vielen Dank für eure Unterstützung!!

    • mirko3
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Hier noch eine Einfeldvariante. Mirko

    let me := this.Datum;
    sum((select Tabelle)[yearmonth(Datum) <= yearmonth(me) and
            if month(me) <= 4 then
                    yearmonth(Datum) >= yearmonth(date(year(me) - 1, 5, 1))
                else
                    yearmonth(Datum) >= yearmonth(date(year(me), 5, 1))
                end].Betrag)
    
      • Ninox-Professional
      • planoxpro
      • vor 8 Monaten
      • Gemeldet - anzeigen

       Top! Müsste auch funktionieren. Wäre dann die "technische" Lösung, von der ich oben schrieb. Und wohl besser als meine pragmatische (sofern man die Buchungsperioden nicht sowieso für die Buchhaltung braucht).

    • alexandra
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Vielen Dank! Ist schon eingearbeitet.

Content aside

  • Status Answered
  • vor 8 MonatenZuletzt aktiv
  • 10Antworten
  • 93Ansichten
  • 4 Folge bereits