Thema: Delphi Max(Datum) Min(Datum)

Einzelnen Beitrag anzeigen

Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#4

AW: Max(Datum) Min(Datum)

  Alt 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)
  Mit Zitat antworten Zitat