Hallo...
In einer Tabelle werden im Stundentakt Werte von Geräten festgehalten. Für jedes Gerät wird ein Datensatz geschrieben. Wenn die Anwendung mal nicht läuft, wird beim Stundenwechsel kein Datensatz geschrieben.
Ich möchte für einen bestimmten Zeitraum und bestimmte (mehrere!) Geräte die Durchschnitts-Tagessummen ermitteln. Die Eingrenzung der zu berücksichtigen Geräte baue ich mir in strWhere zusammen.
Meine erste Überlegung war das so zu machen:
Dim strWhere As String
'strWhere = ....
cmd.CommandText = "SELECT DATEPART(day, colDatum), AVG(colEinnahmen), AVG(" & _
"colAusgaben) FROM tabKasse WHERE " & strWhere & " GROUP BY DATEPART(day," & _
"colDatum)" Wäre die Abfrage nur für ein Gerät, über das an dem Tag z.B. 12 Datensätze existieren, müßte ich den Durchschnittswert x 12 nehmen um den Tageswert zu erhalten. Das Problem ist, daß ich nicht weiß aus wie vielen Stunden der Durchschnittswert errechnet wurde.
Daher dann Idee 2:
Dim strWhere As String
'strWhere = ....
cmd.CommandText = "SELECT DATEPART(day, colDatum), SUM(colEinnahmen), SUM(" & _
"colAusgaben) FROM tabKasse WHERE " & strWhere & " GROUP BY DATEPART(day," & _
"colDatum)" Hier habe ich die Summen jedes Tages. Die muß ich dann nur noch durch die Anzahl der Geräte teilen, die [u]an dem jeweiligen Tag zur Summenbildung berücksichtigt wurden. Es gibt in der Tabelle auch eine Spalte für die GeräteID (colID), insofern wäre die Information schon vorhanden.
Notlösung wäre: Idee 2 dahingehend ergänzt, daß ich bei GROUP BY noch zusätzlich die GeräteID mit angebe und dann "manuell" den Geräte-Tages-Durchschnitt ausrechne. Besonders chic finde ich das aber nicht
Hat jemand eine Idee wie man das vernünftig lösen kann?
Carsten
------------
Alle Menschen sind klug. Die einen vorher, die anderen nachher. (Voltaire)
|