Hallo zusammen,
ich habe eine Abfrage über eine Tabelle, die mir summierte Einsatzzeiten gruppiert nach Jahr, Ort, Produkt zurückgeben soll.
Die Daten in der Tabelle Dispo liegen in folgender Form vor
Datum, Ort, Produkt, Anfang, Ende
03.01.2015,Berlin, 401, 10:00, 11:00 ->(1 Std)
04.01.2015,Berlin, 401, 15:00, 16:00 -> (1 Std)
01.01.2015,Rom, 401, 10:00, 15:00 -> (5 Std)
02.01.2015,Rom, 402, 10:00, 11:00 -> (1 Std)
02.01.2015,Rom, 402, 20:00, 01:00 -> (5 Std)
Rauskommen soll:
Jahr, Ort, Produkt, EStd
2015, Berlin, 401, 2.00
2015, Rom, 401, 5.00
2015, Rom, 402, 6.00
Der erste Ansatz war:
SELECT Year(Datum) AS JAHR, Ort, Produkt,
Sum (DATEDIFF(n, Anfang, Ende))/60.00 AS EStd
FROM Dispo
group by Year(Datum), Ort, Produkt
Sah gut aus, aber da ein paar der Endzeiten über Mitternacht hinausgingen und somit die Berechnung von Datediff in irgendwelchen utopischen Minus Bereichen lag, habe ich dafür dann eine Fallunterscheidung mit CASE gemacht.
SELECT Year(Datum) AS JAHR, Ort, Produkt,
CASE
WHEN Anfang>Ende THEN Sum (1440-(DATEDIFF(n, Ende,Anfang)))/60.00
ELSE Sum (DATEDIFF(n, Anfang, Ende))/60.00
END AS EStd
FROM Dispo
group by Year(Datum), Ort, Produkt
Jetzt bekomme ich aber diese Fehlermeldung:
Die Anfang-Spalte ist in der Auswahlliste ungltig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten ist. (Spalte 3)
(Ende-Spalte analog)
Ich will aber Anfang und Ende weder ausgeben noch darüber gruppieren, weil ich damit mehrere Summen pro Produkt bekomme.
Irgendwelche Ratschläge?
Vielen Dank und beste Grüße,
Isii