Schnittmenge der Jahre

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Schnittmenge der Jahre

    Hallo Leute,

    ich stehe vor einem unlösbarem Rätsel, an dem ich mich schon seit Wochen vergeblich versuche.

    Für eine Datenanalyse bekommen wir vom Buchhalter alle Rechnungen als csv und lesen diese in eine MYSQL-Datenbank ein.
    Jetzt wollen wir die tatsächlichen Buchungen/ Geschäftsvorgänge pro Kunden- und Rechnungsnummer rausfinden.

    Das Buchhaltungssystem gibt entweder die offenen Buchungen pro Wirtschaftsjahr plus die neuen Buchung jedentisch Jahr für Jahr weiter, oder
    ab einem unbekannten Zeitpunkt werden die Buchungen des Vorjahres nicht mehr aufgeführt und gelten somit als automatisch weitergegeben.


    Beispiel:

    Jahr |Geschäftspartner| Renr | Betrag |
    --- -+------------ ---+------+--------|
    2009 | 10000 | 123 | 100.00 | neue Buchung
    2009 | 10000 | 123 | 100.00 | neue Buchung
    2010 | 10000 | 123 | 100.00 | Weitergabe von 2009
    2010 | 10000 | 123 | 100.00 | Weitergabe von 2009
    2010 | 10000 | 123 | 100.00 | neue Buchung
    2011 | 10000 | 123 | 100.00 | neue Buchung, da nicht alle Werte aus 2010 weitergegeben werden
    2012 | 10000 | 123 | 100.00 | Weitergabe aus 2011
    2012 | 10000 | 123 | -30.00 | neue Buchung
    2013 | 10000 | 123 | 100.00 | Weitergabe aus 2012
    2013 | 10000 | 123 | -30.00 | Weitergabe aus 2012
    2013 | 10000 | 123 | -30.00 | neue Buchung


    Mit reinem Gruppieren oder Distinct komme ich nicht weiter. Eine Nachverarbeitung per PHP kommt auch nicht in Frage,
    da ich die Ausgabe zum weiterverarbeiten in MYSQL brauche.Ich brauche so eine Art Schnittmenge von Jahr zu Jahr

    Das müsste rauskommen

    2009 | 10000 | 123 | 100.00
    2009 | 10000 | 123 | 100.00
    2010 | 10000 | 123 | 100.00
    2011 | 10000 | 123 | 100.00
    2012 | 10000 | 123 | -30.00
    2013 | 10000 | 123 | -30.00

    Ich hoffe jemand hat eine Idee.

    Viele Grüße
    Apollon

  • #2
    Hi,

    wieso geht das nicht mit GROUP BY und WHERE??

    mfg streuner
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

    Kommentar


    • #3
      Weil Einträge im Jahr mal beachtet werden und mal nicht (siehe Beispiel jahr 2010 oben, der 3 Eintrag würde verloren gehen) ist es m.E. so einfach nicht möglich. Meine Idee wäre, wobei ich nicht weiss wie man das umsetzen kann, die Einträge der Jahre gegeneinander abzugleichen...

      Oder ich sehe den Wald vor lauter Bäumen nicht...

      Kommentar


      • #4
        Zitat von mr_apollon Beitrag anzeigen
        Weil Einträge im Jahr mal beachtet werden und mal nicht (siehe Beispiel jahr 2010 oben, der 3 Eintrag würde verloren gehen) ist es m.E. so einfach nicht möglich.
        Ich kann leider weder aus diesem Post noch aus dem Ausgangspost erkennen, nach welchen Regeln du deine Datensätze berechnet haben willst. Das kann auch an mir liegen.

        Wäre es dir möglich, dein Problem mehr strukturiert und verständlicher darzulegen?

        Meine Idee wäre, wobei ich nicht weiss wie man das umsetzen kann, die Einträge der Jahre gegeneinander abzugleichen. ...
        MySQL lässt sich um benutzerdefinierte Funktionen erweitern, falls dir seine eingebauten Fähigkeiten nicht ausreichen.
        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

        Kommentar


        • #5
          Hallo fireweasel,

          erstmal danke das Du Dir die Sache anschaust, ich habe eine Blockade im Kopf und komme nicht weiter. Sicher habe ich es etwas unverständlich beschrieben - ich versuche es mal auf deutsch

          Es werden alle Eingangs- und Ausgangsrechnungen sowie die aus- und eingehenden Zahlungen extern erfasst. Das Programm gibt als einzige Exportmöglichkeit eine CSV über die offenen Rechnungen aus. Diese CSV wird 1:1 in Mysql importiert.

          Im Normalfall kann jahresunabhängig anhand der Rechnungsnummer eine Summe des Betrages gebildet werden bzw. man kann zur Rechnung erfolgten Vorgänge auflisten.

          Der Haken:

          Wurde ein Jahr abgeschlossen und nachträglich in einem Vorjahr ein Vorgang nacherfasst, werden die selben Buchungen jährlich vorgetragen bis man im aktuellen Jahr der Bearbeitung ist und in der CSV wird ein und der selbe Vorgang pro Jahr wieder neu aufgeführt. Einfaches gruppieren und sortieren würde hier Doppelte Ergebnisse und falsche Zahlen liefern.

          Beispiel: Es ist 2011, und es werden Buchung für 2009 nacherfasst, dann werden die neuen Einträge von 2009 ebenfalls identisch in 2010 ausgegeben. In 2011, 2012 werden diese nicht mehr ausgegeben, obwohl die Rechnungen unter Umständen nach wie vor offen sind.

          2009 | 10000 | 123 | 100.00 | neue Buchung
          2009 | 10000 | 123 | 100.00 | neue Buchung
          2010 | 10000 | 123 | 100.00 | Weitergabe von 2009
          2010 | 10000 | 123 | 100.00 | Weitergabe von 2009
          2010 | 10000 | 123 | 100.00 | neue Buchung
          2011 | 10000 | 123 | 100.00 | neue Buchung, da nicht alle Werte aus 2010 weitergegeben werden

          Leider wird in der Exportdatei keine Markierung/ Buchungsdatum für die nachgetragenen Werte ausgegeben, nach denen man aussortieren kann. Das ist auch das, was es für mich so schwierig macht.

          Ich versuche mal mein Idee verständlich zu erklären:

          Begriffserklärung:
          - Ereignisliste = SQL-Ausgabe
          - Prüfliste (mir ist zur Erklärung nichts besseres eingefallen) ist die Anzahl der Buchungssätze die gegengeprüft werden müssen

          - alle Datensätze werden entsprechend des Jahres aufsteigend geordnet
          - die ersten Buchungssätze pro Geschäftspartner/ Rechnungsnummer kommen in die Ergebnisliste und die "Prüfliste"
          - in den Folgejahren werden Jahr für Jahr die Datensätze mit denen der Vorjahre geprüft. Dublette werden aussortiert und neue kommen in die Ergebnisliste und zusätzlich zur "Prüfliste" hinzu
          - im nächsten Jahr müssen die Buchungen mit denen der Prüfliste wieder übereinstimmen usw.
          => Jeder Datensatz der Prüfliste darf nur eine Dublette pro Jahr haben, weitere Dubletten sind auch neue Buchungen die in die Ereignisliste und in die "Prüfliste" müssen.
          => sollten nicht alle Buchungen (oder keine) der Prüfliste im Jah vorhanden sein, sind die zukünftigen Buchungen keine nachträglichen sondern neue Buchung. Die "Prüfliste" für die Kunden und Rechnungsnummer wird zurückgesetzt. Die neuen Buchungen müssen dann wiederum in die Ergebnisliste und in die "Prüfliste" mit denen dann wieder Jahr für Jahr das gleiche Spiel beginnt

          Ist meine Beschreibung verständlich und hast Du eine Umsetzungsidee, vielleicht auch eine einfachere Lösung? Bin am Verzweifeln, vielleicht denke ich auch nur zu kompliziert...

          Besten Dank
          Apollon

          Kommentar

          Lädt...
          X