Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
Delphi XE Architect
|
AW: Max(Datum) Min(Datum)
2. Mai 2013, 13:50
Hi,
nochmal ne Frage zu meinem SQL.
Hab das UNION SELECT eingebaut.
Kann man den SQL noch kürzen und perfomanter machen:
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
Geändert von Metallicwar ( 2. Mai 2013 um 13:55 Uhr)
|