Lothar Geyer schrieb:
> anscheinend habe ich Dich falsch verstanden. Zunächst mal: Ich will
> drei Werte für jeweils 24 Stunden pro Wochentag. Das sind 168
> Datensätze mit je drei Werten. Oder sehe ich das falsch?
Wenn du eine komplette Auflistung aller Stunden einer Woche haben
willst, dann brauchst du eine Konstruktion, die den Rahmen dieser
Auflistung mit 168 Zeilen erzeugt. Durch stundenweise Gruppierung der
Daten bekämest du ja nur eine Auflistung jener Stunden, die tatsächlich
mit Nutzdaten belegt sind.
Diese Konstruktion kann auf verschiedene Weise realisiert werden, die
portabelste ist die Verwendung von Hilfstabellen.
> Du meintest, dass ich einmalig eine Tabelle anlegen und diese mit den
> Zählern (Anzahl Sätze mit negativem Wert, Anzahl mit positivem Wert
> und Anzahl mit Null) füllen soll. Das ist ja auch Zeit, die die
> Datenbank braucht.
Es werden keine Zählergebnisse abgelegt, sondern nur die Bedingungen für
die Zählung erzeugt. Wenn in der Tabelle wochentag die 7 Tage und in der
Tabelle stunde die 24 Stunden eingetragen sind, ergibt sich folgende
Abfrage (case-Ausdrücke geklaut von Lothar):
select wochentag.tag, stunde.stunde,
(select count(case when WW < 0 then 1 else 0 end)
from nutzdaten
where datepart(weekday, TT)=wochentag.tag and
datepart(hour, TT)=stunde.stunde) erg1,
(select count(case when WW = 0 then 1 else 0 WW end)
from nutzdaten
where datepart(weekday, TT)=wochentag.tag and
datepart(hour, TT)=stunde.stunde) erg2,
(select count(case when WW > 0 then 1 else 0 WW end)
from nutzdaten
where datepart(weekday, TT)=wochentag.tag and
datepart(hour, TT)=stunde.stunde) erg3
from wochentag, stunde
order by wochentag.tag, stunde.stunde;
Für Access muss datepart() und case angepasst werden.
Siegfried