Gruppierung nach Zeit

09/11/2011 - 15:13 von Cliff McLane | Report spam
Hallo zusammen,

habe eine Tabelle mit folgenden Feldern:

TicketNr | OpenDateTime

12345 | 15/09/2011 07:39:04
23456 | 15/09/2011 07:40:09
etc.

Nun möchte ich in einer Abfrage die Anzahl der Tickets pro 30 Minuten
Intervall pro Tag ausrechnen. Den Tag kann ich selektieren, kein Prob.
Ich habe dann über ein zusàtzlich Abfragefeld

Eingangszeit:format(right([opendatetime];8);"hh:mm:ss")

die Zeit extrahiert. Nun möchte ich dieses Zeitfeld im 30 Minuten
Intervall gruppieren und die Anzahl pro Intervall berechnen lassen.
Ich denke, dass es zwar aussieht wie ein Zeitfeld, es das Datenformat
nicht stimmt und ich deswegen nicht gruppieren kann.

So soll es z.B. aussehen:

OpenDateTime AnzahlTickets

07:00:00 12
07:30:00 10
08:00:00 09

usw.

Wer kann helfen?
 

Lesen sie die antworten

#1 Stefan Dase
09/11/2011 - 16:54 | Warnen spam
Am 09.11.2011 15:13, schrieb Cliff McLane:
Nun möchte ich in einer Abfrage die Anzahl der Tickets pro 30 Minuten
Intervall pro Tag ausrechnen. Den Tag kann ich selektieren, kein Prob.
Ich habe dann über ein zusàtzlich Abfragefeld



Hallo Cliff,

eine Idee von mir wàre, eine Tabelle mit den entsprechenden
Uhrzeiten/Zeitblöcken von..bis zu erstellen. Z.B. so:

TimeFrom | TimeTo
07:00:00 | 07:29:59
07:30:00 | 07:59:59
...

Dann würde es über einen Join funktionieren:

SELECT TimeSlots.TimeFrom, Count(Tickets.TicketNr) AS AnzahlTickets
FROM Ticets, TimeSlots
WHERE (Tickets.OpenDateTime - INT(Tickets.OpenDateTime)) Between
TimeSlots.TimeFrom AND TimeSlots.TimeTo
GROUP BY TimeSlots.TimeFrom

Das (Tickets.OpenDateTime - INT(Tickets.OpenDateTime)) schneidet dabei
den Tag ab. Datum/Zeit werden als Fließkommazahl gespeichert, Tage sind
der Ganzzahlige Anteil, Stunden, Minuten, Sekunden der gebrochene.

Das musst du dir dann nochmal an deine Anforderungen anpassen, dies
sollte dir aber als Hinweis die Richtung vorgeben.

HTH,
Stefan

Ähnliche fragen