Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: Axel18 am Juli 31, 2012, 14:52:43

Titel: komplizierte Abfrage / Bericht
Beitrag von: Axel18 am Juli 31, 2012, 14:52:43
Ich habe mal wieder eine knifflige Angelegenheit.

Für Statistiken habe ich mehrere Abfragen und Berichte erstellt, die funktionieren.

Ich kann also z.B. die Mengen eines bestimmten Kunden des (gesamten) Vorjahres und seine Mengen bis heute aufführen und prozentual vergleichen.

Ich kann in einem zweiten Bericht die Mengen des Kunden für den gleichen Zeitraum, den ich definieren kann, ausgeben.

Nun habe ich mir überlegt, dass es ganz praktisch wäre, hinter dem Kundennamen sowohl die Menge des gesamten Vorjahres, die Menge des Vorjahres im gleichen Zeitraum wie 2012 und die bisherigen Mengen 2012 nebeneinander auszugeben, ich weiß aber nicht, wie das klappen könnte.

Folgende Tabellen und Felder setze ich ein:

Tabelle:             Feldname:
Kunden             ksort
Statistik            MengeVorjahr
Statistik            MengeAktJahr
Rmon                rmon  (hier wird bei den Datensätzen der Liefermonat mit 01, 02, 03, usw. angegeben

In meinen bisherigen Abfragen / Berichten wird dann als Kriterium bei RMON gefragt: >=[von Monat: ] Und <=[bis Monat: ]

Mein Bericht soll dann so aussehen:

Kunde             Menge 2011          Menge 01-07/2011         Menge 01-07/2012

Geht das überhaupt mit den oben definierten Feldern?

Axel

Titel: Re: komplizierte Abfrage / Bericht
Beitrag von: ebs17 am Juli 31, 2012, 16:21:50
ZitatGeht das überhaupt mit den oben definierten Feldern?
Ich hätte keine Vorstellung, wie man aus einer MengeVorjahr Mengen von einzelnen Monaten ermittelt.

Eine vorstellbare Tabelle hätte die Felder KundeID, Menge, Lieferdatum zzgl. ID.
Daraus kann man die einzelnen Abfragen für gezielte Zeiträume erstellen und diese dann zusammenstellen, z.B.

' qryA (01-07/2011)
SELECT KundeID, Sum(Menge) AS MengeA
FROM Tabelle
WHERE Lieferdatum Between DateSerial(Year(Date())-1, 1, 1)
AND DateSerial(Year(Date())-1, 7, 31)
GROUP BY KundeID

' qryB (01-07/2012)
' nur Datumsfilter anders
WHERE Lieferdatum Between DateSerial(Year(Date()), 1, 1)
AND DateSerial(Year(Date()), 7, 31)

' qryC (Menge 2011)
' nur Datumsfilter anders
WHERE Lieferdatum Between DateSerial(Year(Date())-1, 1, 1)
AND DateSerial(Year(Date())-1, 12, 31)


Diese Teilabfragen kann man zusammenfassen:
SELECT KundeID, MengeA, MengeB, MengeC
FROM (qryA INNER JOIN qryB ON qryA.KundeID = qryB.KundeID)
INNER JOIN qryC ON qryA.KundeID = qryC.KundeID


MfGA
ebs