Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tageszahlen über größere Zeiträume ermitteln

4 views
Skip to first unread message

Christoph Michalski

unread,
Jun 1, 2010, 5:43:01 AM6/1/10
to
Hallo,
mit folgender SQL-Abfrage möchte ich aus einem bestimmten Zeitraum die
Anzahl von Datensätzen mit gleichem Datum im Feld "DatumFeld" ermitteln:
"SELECT DatumFeld As Datum, Count(*) As Anzahl " & _
"FROM TestTabelle " & _
"WHERE DatumFeld >= " & VonDatum & " AND DatumFeld <= " & BisDatum & " "
"GROUP BY DAY(DatumFeld) "
Auf diese Weise kann ich die "Tageszahlen" bestimmter Datensätze ermitteln.
Es funktioniert alles sehr gut, aber nur wenn das Von-Datum und Bis-Datum
innerhalb eines Monats liegen. Liegt eins der Werte ausserhalb eines Monats,
so bekommen ich für die Monatstage, die in diesem Zeitraum mehrfach
vorkommen, die Summe der Datensätze an diesem Tagen. Beispiel:
VonDatum = 01.01.2010
BisDatum = 01.06.2010
Im Ergebnis wird mir hier unter "01" die Summe der Datensätze vom
01.01.2010, 01.02.2010, 01.03.2010... etc angezeigt.
Ich möchte aber unbedingt die Zahlen eines jeden Tages getrennt ermitteln.
Wie soll ich es anstellen???
bin für jeden Tipp dankbar
Gruß
Christoph

Helmut Meukel

unread,
Jun 1, 2010, 7:24:06 AM6/1/10
to
"Christoph Michalski" <Christoph...@discussions.microsoft.com> schrieb im
Newsbeitrag news:611FA374-10CC-4710...@microsoft.com...


Hmm,

warum verwendest Du DAY(DatumFeld) ?
Was steht in DatumFeld *wirklich* drin?
Wenn es echt nur das Datum ist - ohne die Uhrzeit -
dann sollte GROUP BY DatumFeld das Richtige sein.
Enthält DatumFeld auch die Uhrzeit, z.B. weil Now() zum Eintrag
benutzt wurde, so ist schon der WHERE-Abschnitt nicht ganz richtig:


> "WHERE DatumFeld >= " & VonDatum & " AND DatumFeld <= " & BisDatum &

und müsste entweder
"WHERE DatumFeld >= " & VonDatum & " AND DatumFeld < " & BisDatum &
oder
"WHERE DatumFeld >= " & VonDatum & " AND DatumFeld < " & (BisDatum + 1) &
heißen, jenachdem ob ausschließlich oder einschließlich BisDatum.
und man muss die Uhrzeit für das GROUP BY von DatumFeld entfernen.

Helmut.


Christoph Michalski

unread,
Jun 1, 2010, 8:26:01 AM6/1/10
to
Hi Helmut,
danke für die schnelle Anwort!
1. im Feld DatumFeld steht nur Datum, ohne Uhrzeit
2. ich hab das Beispile unglücklich gewählt. Wenn es um Tage ginge, dann
könnte ich auf ...DAY(DatumFeld) ... verzichten und mit ...GROUP BY
DatumFeld... das gewünschte Resultat bekommen. Was ist aber wenn ich Montas-
oder Jahreszahlen ermitteln will? Dann muß ich doch MONTH oder YEAR vor
DatumFeld stellen und dann habe ich wieder das geleiche Problem, wenn der
gewählte Zeitraum mehrere Montate bzw. Jahre einschließt; oder????
Gruß
Christoph
"Helmut Meukel" wrote:

> .
>

Helmut Meukel

unread,
Jun 1, 2010, 4:00:29 PM6/1/10
to
Christoph,

Ich arbeite zwar mit Datenbanken, aber ausschließlich Access.
Ich programmiere in VB6, und verwende häufiger den direkten
Zugriff via DAO auf Tables als auf per SQL-Queries erzeugte
Recordsets. Oh, ich habe in den letzten 15 Jahren weit über 100
SQL-Abfragen erzeugt und in den Access-Datenbanken abgelegt
um sie dann vom VB6-Code mit Parameterübergabe aufzurufen.
Aber es ist nicht mein täglich Brot und mit den leicht abweichenden
SQL-Dialekten anderer Datenbanken bin ich nicht vertraut.
Dies vorhergeschickt.
Jahreszahlen sollten wie Tageszahlen kein Problem sein,
YEAR(DatumFeld) liefert doch einwandfreie Ergebnisse, oder?
Bleiben noch die Monatszahlen. Was ist mit
"GROUP BY YEAR(DatumFeld), MONTH(Datumfeld) "

Helmut.


"Christoph Michalski" <Christoph...@discussions.microsoft.com> schrieb im

Newsbeitrag news:B4398A2A-BB14-45E2...@microsoft.com...

[...]
>>
>> Helmut.
>>

0 new messages