Hi!
wenn eine Seriennummer mal einen Tag keinen Datensatz hat, dann soll es 0 zeigen.
Ein DBMS ist dazu da, vorhandene Daten abzufragen. Nicht vorhandene Daten kann es nicht liefern.
Wie bekomme ich das hin?
Wenn es für jede Seriennummer mindestens einen Datensatz gibt und für ein Datum ebenfalls, dann kannst du mit einer Self-Join-Orgie etwas zaubern. Wenn du Datum und Seriennummer von anderen Quellen lückenlos bekommst, bekommst du ein genaueres Ergebnis.
Zunächst bildest du aus allen eindeutigen Seriennumemrn und allen eindeutigen Datümern™ ein kartesisches Produkt, an das du dann per LEFT JOIN über Seriennummer und Datum die eigentliche Tabelle anbindest. Diese gruppierst du nach Seriennummer und Datum. In der Select-Klausel kann dann Seriennummer, Datum und die gezählte Anzahl stehen. (Mit anderen Quellen für Seriennummer und Datum bildest du das kartesische Produkt aus diesen.)
SELECT s.serialnumber, d.date, count(t.value)
FROM
(
(SELECT DISTINCT serialnumber FROM table) s,
(SELECT DISTINCT date FROM table) d
) LEFT JOIN table t ON s.serialnumber = t.serialnumber AND d.date = t.date
GROUP BY s.serialnumber, d.date
Lo!