Hallo,
ich bin kein großer SQL-Experte und habe folgendes Problem:
(Delphi / ADOQuery / Provider: Microsoft.Jet.OLEDB.4.0)
Aus einer EXCEL-Tabelle den 2 Spalten Leistung (float) und DatZeit (DateTime) sollen folgende Summen ausgelesen werden.
1. Arbeit als Summe aller Leistungswerte nach Monaten gruppiert
2. ArbeitHT Summe aller Leistungswerte, die im Zeitbereich zwsichen 06:00 und 20:00 Uhr liegen, ebenfalls nach Monaten gruppiert.
3. ArbeitNT Summe aller Leistungswerte, die im Zeitbereich zwsichen 20:00 und 06:00 Uhr liegen, ebenfalls nach Monaten gruppiert.
Das Ergebnis sollte so aussehen:
Monat Arbeit ArbeitHT ArbeitNT
Jan 100.000 70.000 30.000
Feb 80.000 40.000 40.000
Mrz 90.000 60.000 30.000
usw.
Versucht hab ich es mit folgendem Befehl:
SELECT format(DatZeit, "mmmm") as MonatsName, format(DatZeit, "mm") as MonatNr, SUM(Leistung)/4 as Arbeit,
( SELECT SUM(Leistung)/4 FROM [Tabelle1]
WHERE ( Format(DatZeit,"hh:mm:ss") > '06:00:00') AND ( Format(DatZeit,"hh:mm:ss") <= '20:00:00')) AS ArbeitHT,
( SELECT SUM(Leistung)/4 FROM [Tabelle1]
WHERE ( Format(DatZeit,"hh:mm:ss") <= '06:00:00') OR ( Format(DatZeit,"hh:mm:ss") > '20:00:00') ) AS ArbeitNT
FROM [Tabelle1]
GROUP BY format(DatZeit, "mm")
Im Ergebnis werden ArbeitHT und ArbeitNT aber immer über das ganze Jahr summiert und nicht monatsweise.
Wie kann ich das gewünschte Ergebnis mit einem SQL-Befehl realisieren? Danke für Eure Hilfe
ich bin kein großer SQL-Experte und habe folgendes Problem:
(Delphi / ADOQuery / Provider: Microsoft.Jet.OLEDB.4.0)
Aus einer EXCEL-Tabelle den 2 Spalten Leistung (float) und DatZeit (DateTime) sollen folgende Summen ausgelesen werden.
1. Arbeit als Summe aller Leistungswerte nach Monaten gruppiert
2. ArbeitHT Summe aller Leistungswerte, die im Zeitbereich zwsichen 06:00 und 20:00 Uhr liegen, ebenfalls nach Monaten gruppiert.
3. ArbeitNT Summe aller Leistungswerte, die im Zeitbereich zwsichen 20:00 und 06:00 Uhr liegen, ebenfalls nach Monaten gruppiert.
Das Ergebnis sollte so aussehen:
Monat Arbeit ArbeitHT ArbeitNT
Jan 100.000 70.000 30.000
Feb 80.000 40.000 40.000
Mrz 90.000 60.000 30.000
usw.
Versucht hab ich es mit folgendem Befehl:
SELECT format(DatZeit, "mmmm") as MonatsName, format(DatZeit, "mm") as MonatNr, SUM(Leistung)/4 as Arbeit,
( SELECT SUM(Leistung)/4 FROM [Tabelle1]
WHERE ( Format(DatZeit,"hh:mm:ss") > '06:00:00') AND ( Format(DatZeit,"hh:mm:ss") <= '20:00:00')) AS ArbeitHT,
( SELECT SUM(Leistung)/4 FROM [Tabelle1]
WHERE ( Format(DatZeit,"hh:mm:ss") <= '06:00:00') OR ( Format(DatZeit,"hh:mm:ss") > '20:00:00') ) AS ArbeitNT
FROM [Tabelle1]
GROUP BY format(DatZeit, "mm")
Im Ergebnis werden ArbeitHT und ArbeitNT aber immer über das ganze Jahr summiert und nicht monatsweise.
Wie kann ich das gewünschte Ergebnis mit einem SQL-Befehl realisieren? Danke für Eure Hilfe
Comment