SQL-Abfrage um fehlende Werte ergänzen
-
Hallo alle zusammen,
ich habe eine Access-DB erstellt um Sensordaten aus verschiedenen Dateien zu importieren und dann auszuwerten. Bei der Auswertung soll ermittelt werden, wieoft jeder Messwert gemessen wurde. Das hab ich mit der folgenden Abfrage gelöst:
SELECT Typ1.[Wert], Count(Typ1.[Wert]) AS Anzahl FROM Typ1 WHERE Typ1.[Wert]>=1900 AND Typ1.[Wert]<=2050 GROUP BY Typ1.[Wert] ORDER BY Typ1.[Wert];
Jetzt habe ich nur das Problem, das bei der grafischen Aufbereitung der Daten mit Excel es schöner wäre, wenn auch die Werte ausgegeben werden, die nicht gemessen wurden.
Derzeitiges Beispiel:
Wert Anzahl
1899 6
1900 3
1901 1
1902 3
1903 2
1904 2
1976 2
1977 18
1978 40
1979 71
1980 59
1981 67
1982 54
1983 16
1984 5Gewünschte Form:
...
1904 2
1905 0
1906 0
...Über einen Tipp, die ich das mit SQL oder VBA machen kann, wäre ich euch sehr dankbar.
-
das müsste doch über ein union gehen. also du lässt die erste abfrage wie gehabt (mach nur das order by weg) und hängst folgende abfrage unten ran:
UNION
SELECT Typ1.[Wert], Count(Typ1.[Wert]) AS Anzahl
FROM Typ1
WHERE Typ1.[Wert]>=1900 AND Typ1.[Wert]<=2050
GROUP BY Typ1.[Wert]
HAVING Count(Typ1.[Wert])=0
ORDER BY Typ1.[Wert];dann hängt er die datensätze an das bisherige ergebnis unten ran, die keine messwerte haben. anschliessend sortiert er über das gesamte ergebnis.
hab das jetzt nicht getestet, müsste aber tun.
-
@temin: Belieben zu scherzen, oder ... ?
HAVING(COUNG(Spalte)) = 0
kann ja wohl nicht gehen.Auf Deutsch übersetzt hiesse das "zeig mir die Daten die nicht da sind".
Ein Datenbank Server versteht das aber nicht.@Korhil:
Mach es Applikations-Seitig.
Wenn du es in der Datenbank machen wolltest, bräuchtest du irgendeine "Row-Source" die dir fortlaufende Zahlen von N-M (1900 bis 2050) ausgibt.
Dazu kann man sich natürlich Hilfs-Tabellen machen, die bloss aus einem Primary-Key bestehen. Bloss schön ist sowas nicht, von daher eben der Vorschlag: machs in der Applikation bevor du die Daten anzeigst.
-
Belieben zu scherzen, oder ... ?
ähm.. ja! das war ich wohl schon ein bisschen überarbeitet und hab das problem nicht richtig verstanden. sorry, ist natürlich unsinn.