Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
Delphi XE Architect
|
AW: Max(Datum) Min(Datum)
6. Mai 2013, 16:54
Ich steh etwas auf dem Schlauch.
Ich kriege mit dem SQL zu Beginn des Threads meine Ergebnismenge zwei mal.
Code:
01.02.2013
02.02.2013
...
28.02.2013
01.02.2013
02.02.2013
28.02.2013
Code:
SELECT ma_s.ID, ma_s.Personalnummer as Personalnr, ma_s.Nachname as Name,
ma_s.Vorname, bd.Datum, bd.Kuerzel, bd.Feiertag, a.Bezeichnung,
IIF(be.Pause = 0, null, ZMIF.MinToHour(be.Pause)) AS PauseH,
ZMIF.MinToIHour(be.Pause) as PauseIH,
IIF(be.Tagesbrutto = 0, null, ZMIF.MinToHour(be.Tagesbrutto)) AS TagesbruttoH,
ZMIF.MinToIHour(be.Tagesbrutto) as TagesbruttoIH,
IIF(be.Mehrarbeit = 0, null, ZMIF.MinToHour(be.Mehrarbeit)) AS MehrarbeitH,
ZMIF.MinToIHour(be.Mehrarbeit) as MehrarbeitIH, b.BuchungsArt,
min(b.Me1) as Me1, max(b.Me2) as Me2, b.Flag
FROM MA_Stammdaten ma_s
LEFT OUTER JOIN Abteilungen a
ON ma_s.ID_Abteilungen = a.ID
LEFT OUTER JOIN Buchungsdatei bd
ON ma_s.ID = bd.ID_MA_Stammdaten
LEFT OUTER JOIN Buchungen b
ON bd.ID_MA_Stammdaten = b.ID_MA_Stammdaten
AND bd.Datum = b.Datum
LEFT OUTER JOIN FEHLTAGEDEFINITION ftd
ON bd.Fehltag = ftd.Kuerzel
LEFT OUTER JOIN B_Ergebnisse be
ON bd.ID = be.ID_Buchungsdatei
WHERE ma_s.ID IN (3)
and Month(bd.Datum) = 2
and Year(bd.Datum) = 2013
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18
UNION ALL
SELECT ma_s.ID, ma_s.Personalnummer as Personalnr, ma_s.Nachname as Name,
ma_s.Vorname, bd.Datum, bd.Kuerzel, bd.Feiertag, a.Bezeichnung,
IIF(be.Pause = 0, null, ZMIF.MinToHour(be.Pause)) AS PauseH,
ZMIF.MinToIHour(be.Pause) as PauseIH,
IIF(be.Tagesbrutto = 0, null, ZMIF.MinToHour(be.Tagesbrutto)) AS TagesbruttoH,
ZMIF.MinToIHour(be.Tagesbrutto) as TagesbruttoIH,
IIF(be.Mehrarbeit = 0, null, ZMIF.MinToHour(be.Mehrarbeit)) AS MehrarbeitH,
ZMIF.MinToIHour(be.Mehrarbeit) as MehrarbeitIH, b.BuchungsArt,
b.Me1 as Me1, b.Me2 as Me2, b.Flag
FROM MA_Stammdaten ma_s
LEFT OUTER JOIN Abteilungen a
ON ma_s.ID_Abteilungen = a.ID
LEFT OUTER JOIN Buchungsdatei bd
ON ma_s.ID = bd.ID_MA_Stammdaten
LEFT OUTER JOIN Buchungen b
ON bd.ID_MA_Stammdaten = b.ID_MA_Stammdaten
AND bd.Datum = b.Datum
LEFT OUTER JOIN FEHLTAGEDEFINITION ftd
ON bd.Fehltag = ftd.Kuerzel
LEFT OUTER JOIN B_Ergebnisse be
ON bd.ID = be.ID_Buchungsdatei
WHERE ma_s.ID IN (3)
and Month(bd.Datum) = 2
and Year(bd.Datum) = 2013
ORDER By ma_s.ID
Kann mir nicht erklären warum !?!
Außerdem werden Pausezeiten nicht einzeln aufgelistet sondern auch nur die erste Buchung und die letzte.
Code:
Arbeitszeit: 07:00 - 16:15
Pause: 11:49 - 12:31
Arbeitszeit: 17:00 - 20:00
Pause: 18:00 - 18:30
SQL Ergebnis ..
Code:
Arbeitszeit: 07:00 - 20:00
Pause: 11:49 - 18:30
.. was ja falsch ist, da die Pausen nicht zusammengefasst werden sollen.
|