Ich arbeite mit Access 2007.
Ich habe das umgesetzt aber er erzeugt immernoch für jeden Eintrag JEWEILS eine Zeile. Wenn kein Eintrag vorhanden ist erzeugt die Abfrage eine Zeile.
Es soll aber nur eine Zeile erzeugen:
SOLL (vereinfacht):
Datum|Gesamt|Krankheit| Sonstiges
-----+------+---------+------------
3.9. | 0 | 0 | 0
-----+------+---------+------------
4.9. | 2 | 1 | 1
-----+------+----------------------
5.9 | 5 | 3 | 2
-----------------------------------
IST (vereinfacht):
Datum|Gesamt|Krankheit| Sonstiges
-----+------+---------+------------
3.9. | 0 | 0 | 0
-----+------+---------+------------
4.9. | 0 | 1 | 0
-----+------+----------------------
4.9. | 0 | 0 | 1
-----+------+----------------------
4.9. | 2 | 0 | 0
-----+------+----------------------
5.9. | 0 | 3 | 0
-----+------+----------------------
5.9. | 0 | 0 | 2
-----+------+----------------------
5.9 | 5 | 0 | 0
-----------------------------------
Mein aktueller Code:
SELECT Tage.Datum, SUM(Ausfallstunden.Anzahl) AS Gesamt,
0 AS Krankheit,
0 AS Beurlaubung,
0 AS Ehrenamt,
0 AS Fortbildung,
0 AS Dienstbesprechung,
0 AS Exkursion,
0 AS Praktikumsbetreuung,
0 AS Klassenfahrt,
0 AS SCHILF,
0 AS Prüfung,
0 AS Konferenz,
0 AS Elternsprechtag,
0 AS Sonstige
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 1
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 2
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 3
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0, 0, 0, 0, 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 4
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0, 0, 0, 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 5
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0, 0, 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 6
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0, 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 7
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, 0, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 8
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, 0, 0, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 9
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 10
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0, 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 11
GROUP BY Tage.Datum
UNION
SELECT Tage.Datum, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl), 0
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 12
GROUP BY Tage.Datum
UNION SELECT Tage.Datum, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, SUM(Ausfallstunden.Anzahl)
FROM Tage LEFT JOIN Ausfallstunden ON Tage.Datum = Ausfallstunden.Datum
WHERE Ausfallstunden.Gründe = 13
GROUP BY Tage.Datum;
Vielen Dank nochmal für Deine schnelle Hilfe!