2017-10-26 6 views
0

Ich habe die folgende Abfrage in einer MS Access 2013 DB, die eine Anzahl aller Datensätze auswählt, die Daten innerhalb der letzten 7 Tage haben:in MS Access

SELECT DateValue([Proofpoint Attachment Defense.Received]) AS [Date], 
     Count([Proofpoint Attachment Defense.Received]) AS [count] 
FROM [Proofpoint Attachment Defense] 
WHERE ((([Proofpoint Attachment Defense.Received])>=DateAdd("d",-7,Date()))) 
GROUP BY DateValue([Proofpoint Attachment Defense.Received]) 

Diese Abfrage erzeugt die folgendes Ergebnis:

Date  count 
10/19/2017 3 
10/20/2017 2 
10/25/2017 3 

Das Ergebnis muss ich schließen müssen alle 7 Tage, auch wenn es keine Ergebnisse sind:

Date  count 
10/19/2017 3 
10/20/2017 2 
10/21/2017 0 
10/22/2017 0 
10/23/2017 0 
10/24/2017 0 
10/25/2017 3 

Antwort

1

Erstellen Sie eine Abfrage oder Tabelle, die Daten für Ihren gesamten Bereich erstellt und denselben Filter anwendet.

Dann erstellen Sie eine neue Abfrage mit Tabelle/Abfrage als Quelle und mit einem linken äußeren Join zu Ihrer Abfrage oben im Feld Datum.

Das wird Ihre Zählung als jetzt und Null für die fehlenden Daten zurückgeben. Verwenden Sie Nz(CountField, 0), wenn Sie Null für Nullen möchten.

Nachtrag:

Eine Abfrage für eine Reihe von Terminen zu erzeugen können here

+1

Sie finden sind nicht geändert gehen, um Ihre berühmte Sequenz zu erzeugen Abfrage schreiben Daten zu produzieren? Schade;) –

+0

@ErikvonAsmuth: Oh, das habe ich für einen Moment vergessen. Link wird hinzugefügt. Danke für den Head-Up. – Gustav

+1

@Gustav: Danke dafür, ich konnte es genau so arbeiten lassen, wie ich es brauchte. –