Access 2010: Idee für Abfrage gesucht

Hallo,

bei der Gestaltung einer Abfrage fehlt mir igendwie di zündende Idee, daher mal meine Frage ans Forum:

Ich habe 4 Datumsfelder A, B, C, D

In Feld A steht immer ein Datum, welches immer älter als B, C und D ist.
In den Felder B, C und D steht in mindestens einem ein Datum, es kann aber auch in allen dreien ein (jeweils unterschiedliches) Datum stehen.

Ich möchte nun die Anzahl der Tage aus B-A, C-A, D-A berechnen und mir den Durchschnitt der Tage aller ausgewerteten Datensätze ausgeben lassen.
Problem ist, dass er bei der Berechnung des Durchshnittswertes nur den niedrigesten Zeitraum nehmen soll.

Bsp.
Datensatz 1
A = 01.01.2015
B = 02.01.2015
C = 03.01.2015
D = 04.01.2015

Datensatz 2
A = 01.01.2015
B = NULL
C = NULL
D = 06.01.2015

Berechnung:
Datensatz 1
B - A = 1 Tag
C - A = 2 Tage
D - A = 3 Tage

Datensatz 2
B - A = NULL
C - A = NULL
D - A = 5 Tage

Durchschnittsbildung: bei Datensatz 1 ist 1 Tag der günstigste Wert, bei Datensatz 2 sind 5 Tage der günstigste Wert, also (1+5)/2 = durchschnittlich 3 Tage -> da möchte ich hin

Hat jemand von Euch eine Idee zur Umsetzung?

Dank vorab und Grüße aus Leipzig
Ronny

Hallo,

den ersten Schritt (der Berechnung der Differenztage) kann die Datediff-Funktion (in einer Abfrage) leisten.

Den zweiten Schritt (Durchschnittswerte) habe ich nicht ganz begriffen („günstigster Wert“). Vermutlich kann aber auf Basis der o. g. Abfrage eine weitere aufgesetzt werden, die die AVG (Mittelwert) -Domainen-Funktion zur Berechnung verwendet.

Gruß
Franz,DF6GL

Danke für die schnelle Antwort.

Mit „günstigster Wert“ ist gemeint, dass er pro Datensatz nur den niedrigsten Wert zur Durchschnittsberechnung heranziehen soll. Das ist auch mein eigentliches Problem, also in der Berechnung nur diesen einen Wert pro Datensatz heranzuziehen anstatt alle möglichen Werte pro Datensatz.

Grüße
Ronny

Hallo,

im Grunde ist die Tabellenstruktur falsch/nicht geeignet.

Um den niedrigsten Wert aus einer Liste von Werten („horizontale“ Felder) heraus zu bekommen, ist eine eigengeschriebene VBA-Funktion erforderlich, die eben aus allen Feldwerten eines DS den niedrigsten heraussucht (berechnet) und zurück liefert.

Tipp: http://dbwiki.net/wiki/VBA_Tipp:_Minimum,_Maximum,_a…

Gruß
Franz,DF6GL

1 Like

Tausend Dank, Du hast mich auf eine Idee gebracht :smile:
Ich berechne den günstigsten Wert per VBA und mache dann damit meine Abfrage.

Du hast mir die Idee für mein Prblem geliefert :smile: :smile:

Viele Grüße aus Leipzig
Ronny