2011-01-05 9 views
0

ich eine einzige Zählung Zeile aus einem bestimmten Datumsbereich wie folgt zu erreichen:Mehrfachzählschlüsseldaten Zeilen basierend auf Datumsbereiche (Zugang db)

SELECT table.[EVENT NAME], Count(*) AS [Count] 
FROM table 
WHERE [EVENT]='alphabetical' And table.DATE>=#11/20/2010# And (table.DATE)<=#11/26/2010# 
GROUP BY table.[EVENT NAME]; 

aber wie konnte ich mehrere Zeilen mit unterschiedlichen Datumsbereiche hinzufügen?

[EVENT NAME],[DATE 11/20-11/26],[DATE 11/27-12/3], etc...


EDIT

die Daten so etwas wie dieses

event1;1/11/2010 
event1;1/11/2010 
event2;1/11/2010 
event2;1/11/2010 
event2;1/11/2010 
event3;1/11/2010 
event1;1/12/2010 
event1;1/12/2010 
event2;1/12/2010 
event2;1/12/2010 
event4;1/12/2010 
event4;1/12/2010 

usw.

und wou aussehen würde ld wie etwas (vorzugsweise mit mehr Spalten):

Antwort

2

Sie würden eine Gruppierung nach Klausel und Gruppe nach dem Datum verwenden.

Sie haben keine Beispieldatensätze mit erwarteten Ergebnissen bereitgestellt, die uns helfen können. Mit anderen Worten posten Sie weitere Informationen .. Aber von dem, was ich Ihnen sagen kann, wollen Sie eine Zählung basierend auf einem Datumsbereich.

Also, wenn Sie hatte 1.1.2010 mit 10 Reihen und 2010.01.02 mit 20 referenzierte Zeilen und 2010.01.03 mit 6 Verweiszeilen ... Sie würden Ausgabe wie folgt wollen:

1/1/2010 10

1/2/2010 20

1/3/2010 6

So SELECT COUNT(*), MyDate FROM MyTable GROUP BY MyDate

Um Ihre Frage zu einem Datumsbereich zu beantworten, denken Sie daran, wie Gruppierung funktioniert, indem Sie eine Gruppe von Daten gruppieren, indem Sie alle Gruppen kombinieren, die einem Kriterium entsprechen. Wenn Sie also Gruppierung nach Datum sagen, gruppiert es sich nach einem einzigen Datum. Sie möchten einen Datumsbereich, sodass jede Zeile einen Bereich kennt oder versteht (von Anfang bis Ende). Daher müssen Sie diese Spalten in jede Ihrer Zeilen einfügen, indem Sie sie über SQL generieren.

bearbeiten

Zum Beispiel

SELECT Count(*), DATEADD(day, -10, GetDate()) AS StartDate, DATEADD(day, 10, GetDate()) AS EndDate FROM MyTable GROUP BY StartDate, EndDate

Access hat similiar Funktionen Tage Termine hinzufügen, so dass für MS Access nachschlagen. Dann erzeuge einfach ein Start- und Enddatum für jede Spalte.

+0

Wie würde ich nach Datumsbereichen gruppieren? – Daniel

+0

@Daniel, Sie würden nach Datumsbereichen gruppieren siehe http://www.sqlteam.com/article/group-by-using-weeks – JonH

+0

der Teil, über den ich verwirrt bin, ist, wie bekomme ich zwei separate Gruppierungen, eine für Ereignistyp und ein anderes für das Datum. Oder wäre es am besten, eine Tabelle zu erstellen, die Ereignisse/Tag gruppiert und die für Datumsbereiche abfragt? – Daniel

Verwandte Themen