Zählen von Datensätzen nach Jahr und Monat, einschließlich Nullzählungen

Ich verwende einen SQL Server Compact Edition-Server und möchte die Anzahl der Kommentare pro Monat zählen, die einem bestimmten Lernprogramm innerhalb eines Datumsbereichs entsprechen, einschließlich der Monate mit der Anzahl Null. Ich weiß, dass ich eine "Kalendertabelle" mit meiner Tabelle verknüpfen muss, um die fehlenden Monate zu berücksichtigen, aber ich benötige Hilfe bei der korrekten Implementierung dieser Tabelle.

Ich habe eine Tabelle mit allen Kommentaren aus verschiedenen Tutorials. Diese Tabelle heißt Kommentare und die Spalten, die ich brauche, sind[Tutorial] (nvarchar) und[DateAdded] (DateTime).

Tutorial |  DateAdded  
---------+-------------
sample   |  2013-09-02  
sample   |  2013-09-04
sample   |  2013-09-12
sample   |  2013-09-12
example  |  2013-09-15
sample   |  2013-09-16
sample   |  2013-09-21
sample   |  2013-09-30
sample   |  2013-10-01   
sample   |  2013-11-11
sample   |  2013-11-11
example  |  2013-11-14
sample   |  2013-11-15
sample   |  2013-11-19
sample   |  2013-11-21
sample   |  2013-11-25
sample   |  2014-02-04
sample   |  2014-02-06  

Und ich habe eineCalendar Tabelle mit einer Jahres- und Monatsspalte wie folgt:

Year | Month
-----+------
2000 | 01
2000 | 02
.    | .
.    | .
.    | .
2099 | 12

Wenn ich nach der monatlichen Anzahl der "Beispiel" -Kommentare aus dem vergangenen Jahr (Stand: 14. Februar 2014) suchen würde, wäre die ideale Ausgabe:

Tutorial | Year | Month | Count
---------+------+-------+------
 sample  | 2013 |  09   |  7
 sample  | 2013 |  10   |  1
 sample  | 2013 |  11   |  6
 sample  | 2013 |  12   |  0
 sample  | 2014 |  01   |  0
 sample  | 2014 |  02   |  2

Ich konnte herausfinden, wie die folgende Abfrage ausgeführt wird, benötige jedoch die Monate ohne Kommentare, um auch 0 zurückzugeben.

SELECT 
     Tutorial, 
     datepart(year, DateAdded) AS Year, 
     datepart(month, DateAdded) AS Month, 
     COUNT(*) AS Count From Comments 
WHERE 
     DateAdded > DATEADD(year,-1,GETDATE())  
       AND 
     Tutorial='sample' 
GROUP BY 
     Tutorial, 
     datepart(year, DateAdded), 
     datepart(month, DateAdded)

Ausgabe mit Beispieldaten von oben.

Tutorial | Year | Month | Count
---------+------+-------+------
 sample  | 2013 |  09   |  7
 sample  | 2013 |  10   |  1
 sample  | 2013 |  11   |  6
 sample  | 2014 |  02   |  2

Ich weiß, dass ich die Tabellen verknüpfen muss, aber ich kann nicht herausfinden, welche Verknüpfung zu verwenden ist oder wie sie korrekt implementiert wird. Beachten Sie, dass dies für SQL Server CE gilt, sodass nicht alle Befehle von SQL Server verwendet werden können.

Vielen Dank im Voraus!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage