Access 2016 Abfrage - Datumsbereich nach Jahren und Monaten summieren
Schönen guten Abend in die Runde.
Ich stehe gerade vor einem für mich nicht lösbaren Problem und bin schon Schneeblind.
Die Überschrift gibt wahrscheinlich nicht ganz her, was ich möchte..
Ich habe circa 400 Datensätze die ich aus einer Abfrage bekomme. Diese sehen wie folgt aus:
Es gibt einen Beginn, ein Ende und ein vorzeitiges Austrittsdatum.
Nun möchte ich eine Abfrage erstellen, die es mir erlaubt jeden dieser Datensätze in die belegten Monate aufzusplitten,
um anschließend zu zählen, wie viele Personen im den Monat da waren.
Also je Person/Rechnung soll für jeden Monat der Anwesenheit ein Datensatz erstellt werden.
Wenn jemand früher ausgeschieden ist, soll zur Berechnung das Austrittdatum genommen werden.
Mein aktueller Ansatz geht so:
Ich habe mir 2 Hilfstabellen für das Jahr und den Monat erstellt. Gefüllt von 1 bis 12 und 2010 bis 2030.. als Beispiel.
Nun erstelle ich folgende Abfrage:
In einer zweiten Abfrage zähle ich nun die Anzahl über eine Gruppierung auf Jahre und Monate.
Das funktioniert..
Allerdings ist das Ergebnis der "ersten Abfrage" nicht wie erhofft.
Ich bekomme die Aufteilung in die monatlichen Datensätze, jedoch werden Rechnungen auch noch nach dem Enddatum in den Folgejahren angezeigt.
Ich vermute ich mache einen Denkfehler bei den Monaten..
Ich weiß gerade nicht weiter. WO IST MEIN DENKFEHLER???
Wäre super, wenn mir jemand weiterhelfen könnte..
Gruß
Ich stehe gerade vor einem für mich nicht lösbaren Problem und bin schon Schneeblind.
Die Überschrift gibt wahrscheinlich nicht ganz her, was ich möchte..
Ich habe circa 400 Datensätze die ich aus einer Abfrage bekomme. Diese sehen wie folgt aus:
kd_nr rg_nr beginn ende austritt massnahmenummer kursname zusatz
40621 10146 05.02.2018 09.03.2018 3542017 ITZT M1
40618 10150 04.12.2017 26.01.2018 3542017 ITZT M1
40618 10151 29.01.2018 02.03.2018 3542017 ITZT M1
40619 10162 06.08.2018 21.09.2018 3542017 ITZT M1
40708 10312 02.09.2019 13.08.2021 3452019 FISI
40682 10314 02.09.2019 13.08.2021 3452019 FISI
40770 10317 02.09.2019 13.08.2021 24.04.2020 3452019 Irgendwas
Es gibt einen Beginn, ein Ende und ein vorzeitiges Austrittsdatum.
Nun möchte ich eine Abfrage erstellen, die es mir erlaubt jeden dieser Datensätze in die belegten Monate aufzusplitten,
um anschließend zu zählen, wie viele Personen im den Monat da waren.
Also je Person/Rechnung soll für jeden Monat der Anwesenheit ein Datensatz erstellt werden.
Wenn jemand früher ausgeschieden ist, soll zur Berechnung das Austrittdatum genommen werden.
Mein aktueller Ansatz geht so:
Ich habe mir 2 Hilfstabellen für das Jahr und den Monat erstellt. Gefüllt von 1 bis 12 und 2010 bis 2030.. als Beispiel.
Nun erstelle ich folgende Abfrage:
SELECT sys_hobj_jahre.jahr, sys_hobj_monate.monat, qry_rechnungen_zu_kursen.beginn, qry_rechnungen_zu_kursen.ende, qry_rechnungen_zu_kursen.austritt, sys_kunden.nachname, qry_rechnungen_zu_kursen.kd_nr, qry_rechnungen_zu_kursen.massnahmenummer, qry_rechnungen_zu_kursen.kursname, qry_rechnungen_zu_kursen.zusatz, DateDiff("m",[qry_rechnungen_zu_kursen].[beginn],IIf(IsNull([qry_rechnungen_zu_kursen].[austritt]),[qry_rechnungen_zu_kursen].[ende],[qry_rechnungen_zu_kursen].[austritt])) AS monate
FROM sys_hobj_jahre, sys_hobj_monate, qry_rechnungen_zu_kursen INNER JOIN sys_kunden ON qry_rechnungen_zu_kursen.kd_nr = sys_kunden.ti_kundennummer
WHERE (((sys_hobj_jahre.jahr)>Year([qry_rechnungen_zu_kursen].[beginn]) And (sys_hobj_jahre.jahr)<Year(IIf(IsNull([qry_rechnungen_zu_kursen].[austritt]),[qry_rechnungen_zu_kursen].[austritt],([qry_rechnungen_zu_kursen].[ende]))))) OR (((sys_hobj_jahre.jahr)=Year([qry_rechnungen_zu_kursen].[beginn])) AND ((sys_hobj_monate.monat)>=Month([qry_rechnungen_zu_kursen].[beginn]))) OR (((sys_hobj_jahre.jahr)=Year(IIf(IsNull([qry_rechnungen_zu_kursen].[austritt]),[qry_rechnungen_zu_kursen].[austritt],([qry_rechnungen_zu_kursen].[ende])))) AND ((sys_hobj_monate.monat)<=Month(IIf(IsNull([qry_rechnungen_zu_kursen].[austritt]),[qry_rechnungen_zu_kursen].[austritt],([qry_rechnungen_zu_kursen].[ende])))))
ORDER BY sys_hobj_jahre.jahr, sys_hobj_monate.monat, qry_rechnungen_zu_kursen.kd_nr;
In einer zweiten Abfrage zähle ich nun die Anzahl über eine Gruppierung auf Jahre und Monate.
Das funktioniert..
Allerdings ist das Ergebnis der "ersten Abfrage" nicht wie erhofft.
Ich bekomme die Aufteilung in die monatlichen Datensätze, jedoch werden Rechnungen auch noch nach dem Enddatum in den Folgejahren angezeigt.
Ich vermute ich mache einen Denkfehler bei den Monaten..
Ich weiß gerade nicht weiter. WO IST MEIN DENKFEHLER???
Wäre super, wenn mir jemand weiterhelfen könnte..
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1805442069
Url: https://administrator.de/forum/access-2016-abfrage-datumsbereich-nach-jahren-und-monaten-summieren-1805442069.html
Ausgedruckt am: 25.12.2024 um 07:12 Uhr