BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Benutzeravatar
bassimin
Beiträge: 16
Registriert: Mi 20. Dez 2017, 11:59
Wohnort: Freiburg
Kontaktdaten:

Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von bassimin » Mi 20. Dez 2017, 13:21

Hallo allerseits

ich versuche mich gerade an einer Datenbank, die die Arbeits- und Geld-Abläufe in unserem kleinen Projekt abbildet und entsprechend Abrechnungen generieren kann.

Täglich kommen Menschen in unterschiedlichem Status eingeordnet - oder kommen nicht, leisten Stunden und erhalten dafür etwas Geld, gutgeschrieben und dann und wann ausgezahlt.
Dafür habe ich eine Tabelle "Menschen" und eine "alletage" angelegt, in der jeder Mensch Vorgänge zugeordnet bekommt: anwesend, wie lange, oder nicht anwesend, Auszahlung erhalten... Aus seinem Status und den Stunden errechnet sich sein Verdienst pro "Vorgang" (=Datensatz).
Die Struktur ist also erst mal schlicht, sollte aber alles abbilden können.

Am liebsten würde ich alles über Formulare, eventuell noch Berichte erledigen.
  • Formular Menschen-alletage zum täglichen dokumentieren
  • Formular NurEinMensch-alletage mit Summen und Zeitfilter
Im Prinzip braucht es am Monatsende ein Blatt pro Person, das alle Summen (verschiedene Stunden, Lohn und Auszahlungen und Guthaben) auflistet. (Formular-Seriendruck, oder Extrabericht?)
Es lässt sich wahrscheinlich herauslesen, dass nachher auch Laien damit umgehen müssen.

Ich füge eine Grafik mit Tabellen und Beziehungen an, die das alles besser darstellen soll - darin stehen auch die Haupt-Anliegen an die Datenbank:
  • Rechenoperationen in der Tabelle
  • BEQUEME zeitliche Filterfunktion über Buttons und Felder im Formular
  • Summierung der Stunden nach Mensch und Zeitraum gefiltert
  • Summierung und dabei auch Berechnung von Stunden in Kategorien anwesend, fehlt, entschuldigt, krank > Ausgabe im Formular
Ich schätze, um die Berechnungen pro Datensatz vollständig durchzuführen und in der Tabelle festzuhalten, braucht es Makros, womit ich völlig unbeschlagen bin. An der über Formularfelder zeitgefilterten Ausgabe des Subformulars habe ich mich Tutorial-gestützt versucht (über eine Filtertabelle https://www.youtube.com/watch?v=Jy9CV1yD7ew&t=724s), das scheint in der Form aber nicht zu gehen.

Also eine - für mich - komplexe Frage. Ich wäre dankbar für fundierte Hinweise und Tips zu:
.stimmt die Konzeption der Datenbank?
.Lösungsmöglichkeiten zu Berechnungen und Darstellungen
.Hilfe zu Makros - Beispielmakro?

Vielen Dank schonmal fürs Helfen!
AP-DB-TEST-exp.odb.zip
Die Datenbank im Grundstadium
(99.3 KiB) 178-mal heruntergeladen
Tabellen, Beziehungen, Aufgaben
Tabellen, Beziehungen, Aufgaben
Datenbankskizze.png (461.36 KiB) 4345 mal betrachtet

Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

Re: Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von Pit Zyclade » Mi 20. Dez 2017, 16:22

Kann Dir nicht helfen, bin nur über Deine Formulierung "Mensch" gestolpert.
Du meinst "Person", denn dass keine Hunde bei dir arbeiten und Lohn bekommen, ist auch mir klar. Vor- und Nachnamen haben (natürliche) Personen. Die haben auch einen PA. Dann gibt es noch "juristische" Personen. Die wiederum sind eigentlich Gruppen oder Zusammenschlüsse von bereits Zusammengeschlossenen und werden i.d. Regel bei Dir nicht arbeiten können.
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von RobertG » Mi 20. Dez 2017, 17:47

Hallo bassimin,

das Ganze sind mir erst einmal zu viele Informationen. Ich greife deshalb hier nur eine Info auf:
Ich schätze, um die Berechnungen pro Datensatz vollständig durchzuführen und in der Tabelle festzuhalten, braucht es Makros, womit ich völlig unbeschlagen bin.
Wenn sich berechnete Werte aus dem Datenbestand ergeben, so werden diese Werte höchstens dann wieder in eine Tabelle geschrieben, wenn sie nicht über SQL sondern nur über Makros, wie Du schreibst, berechnet werden können. In der Regel reicht SQL. Damit entfällt ein Schreiben der Berechnungsergebnisse in eine Tabelle.

Rechenoperation können nicht in einer Tabelle erfolgen. Die dient nur dazu, Daten aufzunehmen. Die Berechnungen erfolgen in Abfragen oder Ansichten.

Schreibe konkret ein Problem auf. Ist das gelöst und Du kommst nicht weiter: Mach' den nächsten Thread auf und wieder ein Problem.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Benutzeravatar
bassimin
Beiträge: 16
Registriert: Mi 20. Dez 2017, 11:59
Wohnort: Freiburg
Kontaktdaten:

Re: Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von bassimin » Mi 20. Dez 2017, 19:47

Hallo Robert
Danke für deine Antwort. Also zwei konkrete "Probleme":
  • Berechnen der Stunden und des Verdienstes aus Anwesenheitszeit und Lohn - das habe ich hinbekommen mit datediff() und Multiplikation.
    Allerdings schon beschränkt in der Formatierung bzw dem Ausgabeformat (Zeit <> dezimal) - zum Weiterrechnen schon nicht ganz perfekt. Ist da ohne Makros weiterzukommen?

    Wenn diese Werte nicht in die Tabelle zurückgeschrieben werden können, müssten sie zur Auswertung immer 'schwebend' bleiben, das heißt jedes Mal neu berechnet werden.
  • Das Holen eines Wertes aus dem letzten Datensatz bezogen auf eine Person in eine andere SPALTE des neuen Datensatzes auf diese Person (StandNEU letzter Datensatz > StandALT neuer Datensatz. Dazwischen liegen unbekannt viele Datensätze bezogen auf andere Personen. Wäre das mit SQL zu machen? (Müsste eigentlich auch in die Tabelle geschrieben werden, meine ich)
Sollte das alles nicht gehen, weil zu kompliziert oder unmöglich, spräche etwas gegen Makros? [Außer dass ich davon nichts verstehe]
;)

Schönen Gruß!
Milan

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von RobertG » Fr 22. Dez 2017, 20:18

Hallo Milan,

das, was Du da schreibst, ist noch nicht konkret genug:
Zeige die Abfrage, mit der Du die Stunden usw. berechnest. Am besten eignet sich hier immer eine kleine Beispieldatenbank.
Und noch einmal: Ja, doppelte Eingaben werden in Datenbanken möglichst vermieden. Änderst Du etwas an einer Position, so würden die Daten nicht mehr stimmig sein, wenn Du nicht alle Folgeschritte entsprechend anpasst. Ein äußerst fehlerträchtiges Verfahren.

Aus dem Grunde wird auch kein Teil eines vorhergehenden Datensatzes als "StandAlt" in einen neuen Datensatz geschrieben. Das hat nicht mit dem Für- und Wider eines Makros zu tun. Mit Makros könnest Du dann höchsten Gegensteuern, um Dein System von Fehlern frei zu halten, die Du ohne Makros an dieser Stelle mit Einsatz der richtigen Technik gar nicht erst machen würdest.

Bei Durchsicht der Beziehungen fallen mir mehrere Unstimmigkeiten auf:
"x-status" ist doppelt mit "alletage" verbunden. Wenn Du in "alletage" "ID-status" speicherst, dann hast Du damit Zugriff auf "lohn" und "status". Die Informationen sind in der Tabelle "x-status" und bleiben auch da. Ein Feld in einer anderen Tabelle reicht.
Aber: Was spielt "menschen" für eine Rolle. Auch da ein Feld "status" und dann wieder eine Verbindung zu "x-status" und "alletage".
Ergebnis: Die Felder "status" und "lohn" haben in "alletage" nichts zu suchen, da die Verbindung über "menschen" erfolgt.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Benutzeravatar
bassimin
Beiträge: 16
Registriert: Mi 20. Dez 2017, 11:59
Wohnort: Freiburg
Kontaktdaten:

Re: Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von bassimin » Do 28. Dez 2017, 15:57

Hallo Robert - Danke!
Also erst mal zu den Beziehungen: Die Menschen haben einen Status (den sie auch mal wechseln können), über den wird ihnen auch ihr "Lohn" zugeordnet. Die Info muss aber irgendwie auch in "alletage" landen, und ich weiß nicht genau, wie dazu die Beziehungen am reduziertesten gestaltet werden, die DB aber "weiß" was Sache ist. Wenn ich eben rumprobiere, sieht es so aus, als ob die in der Abfrage festgelegten Beziehungen ausreichten, die im Beziehungsdialog sogar gelöscht werden können. Vermutlich mit dem Verlust des kaskadischen updatens.

In "alletage" werden alle Vorgänge zu "mensch" dokumentiert - Erscheinen, Zeiten, Stand erarbeitetes Geld, Auszahlungen, neuer Stand. Also müsste Status sprich Lohn auch verknüpft sein. Auszahlungen erfolgen unregelmäßig, nach Bedarf, und so sollte immer abfragbar sein, wie der Kontostand sprich "standNEU" gerade ist. Eine Auszahlung ist, wie Erscheinen und Arbeiten an einem Tag, ein Vorgang sprich Datensatz in "alletage".

Meine Idee war, dass dazu die Tabellenzeilen immer aktuell gehalten werden sollten, eben per Makro. Stimmt, dass sich dadurch natürlich Fehler einschleichen können, wenn alte Datensätze geändert werden, und das Makro nicht wieder neu durchrechnet. Wenn das Makro aber die ganze Tabelle sortiert und entsprechend durchrechnet, wären die Daten präsent und auch konsistent.
Bisher wird die Aufgabe mit mehreren zum Teil verknüpften Calc-Sheets gemacht, und auch hier gibt es Redundanz und Fehler dadurch, dass nicht immer alles korrekt (händisch) übertragen wird. Eine Berechnung per Abfrage scheint mir mit den Anforderungen schon allein der Formate eben überfordert?!? - Habs auf jeden Fall nicht hinbekommen.

Die glatteste Form erschien mir ein Makro-getuntes Formular, das für die entsprechenden Aufgaben (Dokumentation, Filterung, Auswertung, Bericht) alle Angaben aufnimmt, berechnet, anzeigt & filtert. Das würde uns dann täglich ein Stück Zeit einsparen.

Eine Beispieldatenbank habe ich ja beigefügt, da funktioniert das Anzeigen per Formular schon, eine Abfrage berechnet und stellt zusammen, was ich eben konnte. Wenn ich an der DB zur Fragestellung etwas tun kann, immer her mit Vorschlägen.
Die Abfrage mit Berechnungen heißt "alletage_compo", kann aber Verdienst und Auszahlungen nicht aufsummieren.

Code: Alles auswählen

SELECT "alletage"."Datum", "alletage"."mensch", "menschen"."vn", "menschen"."nn", "x_status"."STATUS", "x_wieheute"."wieheute", "alletage"."VON", "alletage"."BIS", "x_status"."LOHN", DATEDIFF( 'mi', "VON", "BIS" ) AS "minuten", ( DATEDIFF( 'mi', "VON", "BIS" ) * "x_status"."LOHN" ) / 60 AS "tagesverdienst" FROM "alletage", "menschen", "x_status", "x_wir", "x_wieheute", "x_einsatz" WHERE "alletage"."mensch" = "menschen"."IDmensch" AND "menschen"."status" = "x_status"."ID-status" AND "alletage"."werhatbezahlt" = "x_wir"."ID-wir" AND "alletage"."WIE" = "x_wieheute"."ID-dajanein" AND "x_einsatz"."ID-einsatz" = "alletage"."Einsatzort" ORDER BY "alletage"."Datum" ASC
Sorry, das sind jetzt viele Infos bzw Gedankengänge, die Fragestellung hat halt eine gewisse Komplexität. Wenn aufgrund des Beschriebenen ein Weg aufscheint, wie das professionell zu lösen ist, sprich 'the way of king & queen, even stony', bin ganz Ohr!

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von RobertG » Fr 29. Dez 2017, 08:37

Hallo Milan,

mach aus der Abfrage zuerst einmal eine Ansicht "Ansicht_alletage-compo", damit das Ganze übersichtlicher wird. Jetzt eine neue Abfrage, die sich auf diese Ansicht bezieht:

Code: Alles auswählen

SELECT "a".*, 
(SELECT SUM("tagesverdienst")  FROM "Ansicht_alletage-compo" WHERE "mensch" = "a"."mensch") AS "VerdienstMensch" 
FROM "Ansicht_alletage-compo" AS "a"
Damit erhältst Du den Verdienst pro "mensch" summiert. Auszahlungen sind bei Dir in der Abfrage nicht enthalten - deswegen kann ich das dafür nicht umsetzen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Benutzeravatar
bassimin
Beiträge: 16
Registriert: Mi 20. Dez 2017, 11:59
Wohnort: Freiburg
Kontaktdaten:

Re: Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von bassimin » Sa 30. Dez 2017, 17:57

Hallo Robert
Danke, das klappt, auch mit den Auszahlungen & Differenz:

Code: Alles auswählen

SELECT "a".*, 
    ( SELECT SUM( "tagesverdienst" ) FROM "Ansicht_compo" WHERE "mensch" = "a"."mensch" ) AS "VerdienstMensch",
    ( SELECT SUM( "AUSBEZAHLT" ) FROM "Ansicht_compo" WHERE "mensch" = "a"."mensch" ) AS "AUSBZMensch",
    ( SELECT SUM( "AUSBEZAHLT" )  - SUM( "tagesverdienst" ) FROM "Ansicht_compo" WHERE "mensch" = "a"."mensch" ) AS "Uebrig"
 
FROM "Ansicht_compo" AS "a"
Der nächste Schritt wäre, im Formular per Eingabefeld Datumsbereiche zu filtern. Wenn ich die Abfrage mit Abfrageparametern zum Datum auf einen kleineren Bereich eingrenze, summiert sie trotzdem ALLE Datensätze auf. Beim Formulieren der Ansicht mit Parametereingabe:

Code: Alles auswählen

SELECT "alletage"."Datum", "alletage"."mensch", "menschen"."vn", "menschen"."nn", "x_status"."STATUS", "x_wieheute"."wieheute", "alletage"."VON", "alletage"."BIS", "x_status"."LOHN", DATEDIFF( 'mi', "VON", "BIS" ) AS "minuten", ( DATEDIFF( 'mi', "VON", "BIS" ) * "x_status"."LOHN" ) / 60 AS "tagesverdienst", "alletage"."STUNDEN", "alletage"."StandALT", "alletage"."VERDIENT", "alletage"."AUSBEZAHLT", "alletage"."StandNEU" FROM "alletage", "menschen", "x_status", "x_wir", "x_wieheute", "x_einsatz" WHERE "alletage"."mensch" = "menschen"."IDmensch" AND "menschen"."status" = "x_status"."ID-status" AND "alletage"."werhatbezahlt" = "x_wir"."ID-wir" AND "alletage"."WIE" = "x_wieheute"."ID-dajanein" AND "x_einsatz"."ID-einsatz" = "alletage"."Einsatzort" AND "alletage"."Datum" >= :qvon AND "alletage"."Datum" <= :qbis ORDER BY "alletage"."Datum" ASC
gibt die Ansicht nichts aus, frägt auch keine Parameter ab.

Es bleibt aber auch die Schwierigkeit des Übertrags, wenn ich zum Beispiel den Februar sehen möchte und darauf eingrenzen könnte, fehlen die stehengebliebenen Beträge vom Januar. (Im Prinzip hat jede Bank die gleiche Fragestellung, der Kontostand muss ja immer stimmen. Wo schreibt die Bank diesen hin? Frägt die Bank immer den kompletten Datenbestand seit Kontogründung ab? Von dieser Überlegung ausgehend scheint mir eine - aufmerksame - Befüllung von Datensatzfeldern per Makro (StandALT/NEU) immer noch nicht ganz dumm ;). Das würde die Auswertung für jeden Zeitpunkt vereinfachen, das Teilen der Tabelle am Jahresende, um nicht immer alle Datensätze von Beginn an mitzuschleppen. Man kann sich ja bewusst sein, dass dies spezielle und errechnete Datenfelder sind, und das Makro kann ja gewisssenhaft bei jeder neuen Speicherung von Beginn bis Ende alles durchrechnen - à la Abfrage?

Schöne Grüße und auch schönes Feiern!
Milan
Dateianhänge
AP-DB-TEST-sum2x.odb.zip
neuester Stand
(120.16 KiB) 156-mal heruntergeladen

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von RobertG » Sa 30. Dez 2017, 19:38

Hallo Milan,

ich habe mir jetzt die neue Version erst einmal nicht heruntergeladen. Hier aber eine Erweiterung der ursprünglichen Abfrage, die Dir den "laufenden Kontostand" wie bei der Sparkasse mitteilt:

Code: Alles auswählen

SELECT "a".*, 
( SELECT SUM( "tagesverdienst" ) FROM "Ansicht_alletage-compo" WHERE "mensch" = "a"."mensch" 
AND "Datum" <= "a"."Datum" ) AS "VerdienstMenschLaufend", 
( SELECT SUM( "tagesverdienst" ) FROM "Ansicht_alletage-compo" WHERE "mensch" = "a"."mensch" ) AS "VerdienstMenschGesamt" 
FROM "Ansicht_alletage-compo" AS "a"
In der Unterabfrage wird also lediglich auf die Werte Bezug genommen, deren Datumswert gleich oder kleiner als der Datumswert des aktuellen Datensatzes ist.

Willst Du den Verdienst grundsätzlich für eine bestimmte Zeit eingrenzen, so muss die Eingrenzung in den Unterabfragen ebenfalls enthalten sein oder die Ansicht muss über einen Filter nur mit bestimmten Werten versehen werden, so dass z.B. nur die Datumswerte vom Februar 2017 enthalten sind. Hier die Variante mit Ansicht ohne einen Filter:

Code: Alles auswählen

SELECT "a".*, 
( SELECT SUM( "tagesverdienst" ) FROM "Ansicht_alletage-compo" WHERE "mensch" = "a"."mensch" 
AND "Datum" <= "a"."Datum" AND "Datum" BETWEEN '2017-02-01' AND '2017-02-28' ) AS "VerdienstMenschLaufend", 
( SELECT SUM( "tagesverdienst" ) FROM "Ansicht_alletage-compo" WHERE "mensch" = "a"."mensch" 
AND "Datum" BETWEEN '2017-02-01' AND '2017-02-28' ) AS "VerdienstMenschGesamt" 
FROM "Ansicht_alletage-compo" AS "a" 
WHERE "Datum" BETWEEN '2017-02-01' AND '2017-02-28'
Die Variante mit Filter, nutzbar auch gut über Formulare:
Du erstellst eine Tabelle "Filter" mit den Felder "ID" (Ja/Nein-Feld), "Startdatum" (Datum), "Enddatum" (Datum). "ID" ist das Primärschlüsselfeld. Es wird zum Start auf "Ja" eingestellt. Das ist der einzige Datensatz, der benötigt wird. Das "Startdatum" und das "Enddatum" kannst Du zum Testen per Hand befüllen - später dann mit Auswahlfeldern in einem Formular. Die Ansicht änderst Du so (... deute auch bereits bestehenden Inhalt hin!):

Code: Alles auswählen

SELECT "alletage"."Datum",  ... WHERE " ... 
AND  "alletage"."Datum" BETWEEN (SELECT "Startdatum" FROM "Filter" WHERE "ID" = TRUE) 
AND  (SELECT "Enddatum" FROM "Filter" WHERE "ID" = TRUE)
ORDER BY "alletage"."Datum" ASC
Das funktioniert erst einmal nur richtig, wenn eben auch ein "Startdatum" und ein "Enddatum" enthalten sind. Wenn Du auch fehlende Eingaben absichern willst kannst Du mit IFNULL oder COALESCE nachjustieren. Siehe dazu auch das Handbuch.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Benutzeravatar
bassimin
Beiträge: 16
Registriert: Mi 20. Dez 2017, 11:59
Wohnort: Freiburg
Kontaktdaten:

Re: Hilfe bei (für mich) komplexer Datenbank mit Berechnungen

Beitrag von bassimin » Sa 30. Dez 2017, 23:42

Hallo Robert
Danke für die prompte Mühe!
Das funktioniert.
Jetzt habe ich versucht, das Prinzip zu erweitern:
Wie muss die Abfrage formuliert sein, dass das auch für Ausbezahlt und Übrig angezeigt wird?
Hab's mal so versucht, das geht aber nicht ("Fehler in SQL-Syntax"):

Code: Alles auswählen

SELECT "a".*, 
( SELECT SUM( "tagesverdienst" ) 
   FROM "Ansicht_compo" 
      WHERE "mensch" = "a"."mensch" 
      AND "Datum" <= "a"."Datum" 
      AND "Datum" BETWEEN '2017-02-01' AND '2017-02-28' ) 
            AS "VerdienstMenschLaufend", 

( SELECT SUM( "tagesverdienst" ) 
   FROM "Ansicht_compo" 
      WHERE "mensch" = "a"."mensch" 
      AND "Datum" BETWEEN '2017-02-01' AND '2017-02-28' ) 
            AS "VerdienstMenschGesamt" 

( SELECT SUM( "AUSBEZAHLT" ) 
   FROM "Ansicht_compo" 
      WHERE "mensch" = "a"."mensch" 
      AND "Datum" <= "a"."Datum" 
      AND "Datum" BETWEEN '2017-02-01' AND '2017-02-28' ) 
            AS "AUSBZMenschLaufend", 
 
( SELECT SUM( "AUSBEZAHLT" ) 
   FROM "Ansicht_compo" 
      WHERE "mensch" = "a"."mensch" 
      AND "Datum" BETWEEN '2017-02-01' AND '2017-02-28' ) 
            AS "AUSBZMenschGesamt" 
            
 ( SELECT SUM( "tagesverdienst" ) - SUM( "AUSBEZAHLT" ) 
   FROM "Ansicht_compo" 
      WHERE "mensch" = "a"."mensch" 
      AND "Datum" <= "a"."Datum" 
      AND "Datum" BETWEEN '2017-02-01' AND '2017-02-28' ) 
            AS "UebrigLaufend", 
 
( SELECT SUM( "tagesverdienst" ) - SUM( "AUSBEZAHLT" ) 
   FROM "Ansicht_compo" 
      WHERE "mensch" = "a"."mensch" 
      AND "Datum" BETWEEN '2017-02-01' AND '2017-02-28' ) 
            AS "UebrigGesamt"       

FROM "Ansicht_compo" AS "a" 
WHERE "Datum" BETWEEN '2017-02-01' AND '2017-02-28'


'diese geht:'
SELECT "a".*, 
( SELECT SUM( "tagesverdienst" ) FROM "Ansicht_compo" WHERE "mensch" = "a"."mensch" ) AS "VerdienstMensch", 
( SELECT SUM( "AUSBEZAHLT" ) FROM "Ansicht_compo" WHERE "mensch" = "a"."mensch" ) AS "AUSBZMensch", 
( SELECT SUM( "tagesverdienst" ) - SUM( "AUSBEZAHLT" ) FROM "Ansicht_compo" WHERE "mensch" = "a"."mensch" ) AS "Uebrig" 
FROM "Ansicht_compo" AS "a"
(Dupliziert und angepasst, am Ende steht meine erweiterte Abfrage deiner vorigen Version ohne "Laufend".

Die Datumsfilterung im Formular geht auch
...und... lässt sich das Filtersegment auch in die gestaffelte SELECT SUM... Abfrage von oben einbauen? Es bleibt, meine ich, immer noch die Frage nach durch Zeitfilterung, später beginnend als am Anfang, wegfallendes Guthaben, oder?

Viele Grüße nochmal
Milan
Dateianhänge
AP-DB-TEST-sum2x.odb.zip
nochmal aktuell(er)
(132.26 KiB) 174-mal heruntergeladen

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten