Wir verfügen über eine Microsoft Access-Datenbank, die eine fortlaufende Liste von Kunden überwacht. Jeder Kunde muss einen Vertrag mit mehreren Abteilungen abschließen - insgesamt 13 (!) Abteilungen - für die wir den aktuellen Fortschritt für jeden Kunden verfolgen wollen, wenn ein Vertrag gesendet und empfangen wird. Diese Struktur ähnelt etwas wie folgt aus:Struktur einer relationalen Datenbank zum Vergleichen mehrerer Daten
Table 1
-------------------------------------------------------------------------------------------------------------------
CUSTOMER_ID | ... | DEP_A_SENT | DEP_A_RECEIVED | DEP_B_SENT | DEP_B_RECEIVED | DEP_C_SENT | DEP_C_RECEIVED | ... |
-------------------------------------------------------------------------------------------------------------------
1 | ... | 2015-05-01 | 2015-05-03 | 2015-05-04 | 2015-05-09 | 2015-05-01 | 2015-05-05 | ... |
2 | ... | 2015-05-01 | 2015-05-05 | 2015-05-01 | 2015-05-03 | 2015-05-13 | --- | ... |
...
- Ich möchte die Zeitspanne zwischen
DEP_X_SENT
mitDEP_X_RECEIVED
für Kunden und Abteilung (zB „Abteilung A berechnen können: 2 Tage, Abteilung B: 5 Tage ... "für Kundennummer 1) - Noch wichtiger, ich möchte alle
DEP_X_RECEIVED
Daten miteinander für einen Kunden vergleichen: Bestimmen des ersten (MIN
) und des letzten (MAX
) Datums, an dem ein Vertrag zum Auffinden eingegangen ist wie viele Tage dauert es für jeden Kunden, bis alle Verträge eingegangen sind. (z. B. "die Verträge wurden innerhalb von 6 Tagen empfangen" für Kundennummer 1, da die erste am 3. Mai und die letzte am 9. Mai empfangen wurde). Außerdem möchte ich die durchschnittliche Zeitspanne für alle Kunden berechnen. Wenn der Vertrag noch nicht empfangen wurde, ist der Wert in diesem Feld nicht vorhanden.
In MySQL kann ich mit Funktionen wie zum GREATEST
und LEAST
arbeiten Werte zwischen verschiedenen Spalten zu vergleichen, aber in Access ich habe jetzt auf VBA verlassen, und ich denke, es ist eine schlechte Praxis betrachtet wird. Wie kann ich meinen Tisch normalisieren und umstrukturieren, um meine Ziele mit den einfachen Operationen MAX
, MIN
und AVG
zu erreichen? Danke vielmals!
Ich glaube nicht, dass Sie in MS Access effektiv tun können, was Sie wollen. Führen Sie die Vergleiche in VBA aus, oder überlegen Sie, zu einer anderen Datenbank zu wechseln, z. B. SQL Server. –